Linux
如何從以批處理模式執行的“top”linux命令更改輸出行長度
以下命令可用於擷取佔用最多 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。