您好我的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)“'时,它将运行并终止进程。
我已经对这个问题进行了一些研究,但是我找不到任何类似的问题。
答案 0 :(得分:3)
我会使用像下面这样简单的东西
cmd = require('node-cmd');
cmd.get('pgrep -f node | xargs kill', (err, data, stderr) => {
console.log(err, data, stderr);
});
即使有多个进程在运行
,它也能正常工作答案 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');