console kill命令在Ubuntu上不起作用

时间:2018-03-07 14:03:23

标签: javascript node.js ubuntu

您好我的Nodejs应用程序上有这个命令,它找到一个带有修剪名称的进程并将其杀掉。

let killTrim = () => {
  console.log('kill "$(pgrep -f ' + trimName + '.mp4)"')
  cmd.run('kill "$(pgrep -f ' + trimName + '.mp4)"')
  trimName = null
}

这在我的计算机上的localhost上完全正常,但不能在我的服务器上运行(ubuntu 16.04)。输出控制台日志,但cmd.run命令不在服务器上运行。当我在服务器上手动输入'kill'$(pgrep -f moo.mp4)“'时,它将运行并终止进程。

我已经对这个问题进行了一些研究,但是我找不到任何类似的问题。

3 个答案:

答案 0 :(得分:3)

我会使用像下面这样简单的东西

cmd = require('node-cmd');
cmd.get('pgrep -f node | xargs kill', (err, data, stderr) => {
  console.log(err, data, stderr);
});

即使有多个进程在运行

,它也能正常工作

Processes terminated

答案 1 :(得分:1)

似乎您的节点应用程序没有足够的权限来终止进程。您可以尝试以下方法:

sudo node app.js 

答案 2 :(得分:1)

我看了你的pastebin。看起来pgrep -f ...会返回多个pid。所以试试这个:

cmd.run('for a in $(pgrep -f '+trimName+'.mp4); do kill $a; done');