Linux

如何從以批處理模式執行的“top”linux命令更改輸出行長度

  • April 30, 2010

以下命令可用於擷取佔用最多 CPU 的目前程序並儲存到文件中:

top -c -b -n 1 > top.log

-c標誌特別有用,因為它為您提供每個程序的命令行參數,而不僅僅是程序名稱。

沒有-c

2497 root      18   0 11264 5888 1524 S  0.0  0.1   0:03.31 miniserv.pl

使用-c(其他有用的命令資訊):

2497 root      18   0 11264 5888 1524 S  0.0  0.1   0:03.31 /usr/bin/perl /usr/libexec/webmin/miniserv.pl /etc/webmin/miniserv.conf

問題是每行輸出都被截斷以適合目前終端視窗。如果您可以擁有一個寬終端,這是可以的,因為您有很多輸出,但是如果您的終端只有 165 個字元寬,那麼每個程序只能獲得 165 個字元的資訊,而且通常沒有足夠的字元來顯示完整的程序命令. 當命令在沒有終端的情況下執行時,這是一個特殊的問題,例如,如果您通過 cron 作業執行此操作。

有誰知道如何停止top截斷數據或強制top每行顯示一定數量的字元?

這並不緊急,因為有另一種方法可以獲取按 CPU 使用率排序的前 10 個程序:

ps -eo pcpu,pmem,user,args | sort -r -k1 | head -n 10

您可以將COLUMNS環境變數設置為較大的值。例如,將其設置為僅用於top呼叫:

$ COLUMNS=1000 top -c -b -n 1 > top.log

至少它適用於 Ubuntu 9.10 上的 bash 4.0.33。

引用自:https://serverfault.com/questions/137309