Top

為什麼nohup top 會切斷輸出行?

  • April 19, 2016

我想用來nohup定期記錄top(每 15 秒)的輸出。為此,我使用 SSH 登錄伺服器,執行以下命令,然後再次註銷:

nohup top -b -c -d15 &

-c標誌提供有關命令的附加資訊,但在生成的nohup.out文件中,此資訊被削減為 82 個字元。

所以不是這樣的輸出:

10484 daemon   20   0 68924 5556 2292 S  0.0  0.0   0:00.06 /opt/CollabNet_Subversion/bin/httpd -D csvn_installed -k start

nohup.out它看起來像這樣:

10484 daemon   20   0 68924 5556 2292 S  0.0  0.0   0:00.06 /opt/CollabNet_Subv

如何防止nohup修剪結果top

您需要使用參數指定top應使用的輸出寬度-w(最多 512 列):

nohup top -b -c -d15 -w512 &

如果你的版本top不支持,使用環境變數-w也可以達到同樣的效果:COLUMNS

COLUMNS=512 nohup top -b -c -d15 &

正如schily所解釋的,由於top在這種情況下不輸出到終端,它無法確定要使用的終端寬度並回退到安全的預設值。

除非有明確的方式告訴您的特定top版本應該使用哪個輸出,否則您不能。我知道的top實現不允許指定輸出寬度。

這是因為nohup導致top程序使用純文件stdout而不是終端執行。

因此,top無法檢索 tty 寬度並回退到標準的 80 列。

引用自:https://unix.stackexchange.com/questions/277538