使用节点child_process.exec执行top命令时如何解决错误?
How to resolve the error while executing top command using node child_process.exec?
我正在尝试使用 node.js 执行一堆 bash 命令。我使用 child_process.exec 来执行命令。
var child_process = require('child_process');
child_process.exec("ps -p $(lsof -ti tcp:8088) o pid=,comm=",function(err,stdout, stderr){
if(err){
console.log('error',err);
return;
}
console.log('stdout', stdout);
});
这将列出端口 8088 中的进程 ID 运行 以及名称。以类似的方式,当我尝试使用进程 ID 执行 top 命令以检查 cpu 和内存利用率时。我遇到了一个错误。
var execTop = function(pid){
child_process.exec("top -p 12769", function(err, stdout, stderr){
if(err){
console.log('error',err);
return;
}
console.log("top output",stdout);
})
}
我在网上找不到太多资源来澄清这个问题。实际错误是
error { [Error: Command failed: /bin/sh -c top -p 12769
top: failed tty get
]
killed: false,
code: 1,
signal: null,
cmd: '/bin/sh -c top -p 12769' }
我很欣赏建议的可能解决方案。提前致谢。
如果你真的想运行这样top
,你需要运行在里面"Batch Mode",比如:
top -b -n 1 -p 12345
这是因为 top
通常是一个交互式命令,需要一个实际的终端来写入。您可能需要考虑使用 ps u -p 12345
之类的东西来获得更简洁的输出。
正如 Grisha 所建议的那样,使用 'Batch Mode',如果只需要 cpu 和内存,对于默认的顶级输出,我会使用类似的东西:
top -b -n 1 -p 12345 | awk '{if(NR>7)print ,}'
我正在尝试使用 node.js 执行一堆 bash 命令。我使用 child_process.exec 来执行命令。
var child_process = require('child_process');
child_process.exec("ps -p $(lsof -ti tcp:8088) o pid=,comm=",function(err,stdout, stderr){
if(err){
console.log('error',err);
return;
}
console.log('stdout', stdout);
});
这将列出端口 8088 中的进程 ID 运行 以及名称。以类似的方式,当我尝试使用进程 ID 执行 top 命令以检查 cpu 和内存利用率时。我遇到了一个错误。
var execTop = function(pid){
child_process.exec("top -p 12769", function(err, stdout, stderr){
if(err){
console.log('error',err);
return;
}
console.log("top output",stdout);
})
}
我在网上找不到太多资源来澄清这个问题。实际错误是
error { [Error: Command failed: /bin/sh -c top -p 12769
top: failed tty get
]
killed: false,
code: 1,
signal: null,
cmd: '/bin/sh -c top -p 12769' }
我很欣赏建议的可能解决方案。提前致谢。
如果你真的想运行这样top
,你需要运行在里面"Batch Mode",比如:
top -b -n 1 -p 12345
这是因为 top
通常是一个交互式命令,需要一个实际的终端来写入。您可能需要考虑使用 ps u -p 12345
之类的东西来获得更简洁的输出。
正如 Grisha 所建议的那样,使用 'Batch Mode',如果只需要 cpu 和内存,对于默认的顶级输出,我会使用类似的东西:
top -b -n 1 -p 12345 | awk '{if(NR>7)print ,}'