[英]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
這樣,你需要在它“批處理模式”運行,如:
top -b -n 1 -p 12345
這是因為top
通常是一個交互式命令,並且希望有一個實際的終端要寫入。 您可能需要考慮使用類似ps u -p 12345
來獲得更簡潔的輸出。
正如Grisha所建議的,請使用“批處理模式”,如果僅需要CPU和內存,則對於默認的頂部輸出,我將使用類似以下內容:
top -b -n 1 -p 12345 | awk '{if(NR>7)print $9,$10}'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.