簡體   English   中英

使用節點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這樣,你需要在它“批處理模式”運行,如:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM