koa项目怎么运行在Linux,nodejs中执行Shell命令(koa+vue)

本文介绍了如何在Node.js中使用`child_process`模块执行Linux命令,以实现后台重启服务的功能。通过前端Vue.js发送请求到web后台,后台调用封装的`exec`函数执行`sudo monit restart OwnServer`命令。当点击前端页面的重启服务按钮时,会触发这个过程,从而实现服务的自动重启。
摘要由CSDN通过智能技术生成

nodejs中怎么执行系统命令或者linux命令来完成一些功能呢?

假设有这样一个需求,在页面中,点击按钮重启服务,升级系统之类的,服务是部署在linux下的C++项目。需要发送请求到web后台,web后台中来执行Linux命令实现重启或者升级服务的功能。刚好在工作中遇到了这样的问题,做一个简要记录。

先查了一部分资料 http://nodejs.cn/api/child_process.html

nodejs可以利用子进程来调用系统命令或者文件,提供了与系统交互的重要接口。在上面的文档中有较为详细的说明。

这里主要用到的是

1 child_process.exec(command[, options][, callback])

首先需要安装一下

npm install child_process --save

先是前端的页面和逻辑

vue项目,使用了element-ui

重启服务

js部分的methods中加一个对应的方法RestartServer(),点击按钮发送请求

RestartVIServer(){

var _this=this;

_this.loading=true;

this.$axios.get("action/OwnRestartServer").then(res=>{

let data=res.data;

_this.$message({

type: 'success',

message: "操作成功!系统正在重启,请稍等1-2分钟后刷新页面",

duration:5000,

showClose: true

});

}).catch(err=>{

_this.$message({

type: 'error',

message: err,

showClose: true

});

})

},

nodeJS ----web后台

话不多说,直接上代码

const Koa=require("koa");

const router=require("koa-router")();

const exec=require('child_process').exec;

let reStartPro="sudo monit restart OwnServer";//这是一条重启服务的linux命令,也可以是执行其他功能的命令~

//对exec进行一个简单的封装,返回的是一个Promise对象,便于处理。

function doShellCmd(cmd){

let str=cmd;

let result={};

return new Promise(function(resolve,reject){

exec(str,function(err,stdout,stderr){

if(err){

console.log('err');

result.errCode=500;

result.data="操作失败!请重试";

reject(result);

}else{

console.log('stdout ',stdout);//标准输出

result.errCode=200;

result.data="操作成功!";

resolve(result);

}

})

})

}

//加URL

router.get('action/OwnRestartServer', async (ctx, next) => {

let result=await doShellCmd(reStartPro);//调用exec

console.log("[restartServer] ",result);

ctx.response.status=result.errCode;

ctx.response.body=result.data;

});

app.use(router.routes());

app.listen(3000);

console.log('app started at port 3000...');

这样在点击重启服务按钮后,会发送127.0.0.1:3000/action/OwnRestartServer请求到web后台,web后台执行Linux命令完成需求功能。

来自为知笔记(Wiz)

标签:web,Shell,err,exec,koa,nodejs,let,result,data

来源: https://www.cnblogs.com/huijihuijidahuiji/p/ea519bbf5ed266ddafa525e2bdaa37c7.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值