以下命令可用于捕获占用最多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
问题是每行的输出被截断以适应当前的terminal窗口。 如果可以有一个宽的terminal,这是可以的,因为你有很多的输出,但是如果你的terminal只有165个字符的宽度,每个进程只能得到165个字符的信息,而且通常没有足够的字符来显示完整的进程命令。 当命令在没有terminal的情况下执行时,这是一个特别的问题,例如,如果你通过cron工作来执行命令。
有谁知道如何停止top截断数据或强迫top每行显示一定数量的字符?
这不是紧急的,因为有一个替代的方法来获得CPU使用sorting的前10个进程:
ps -eo pcpu,pmem,user,args | sort -r -k1 | head -n 10
您可以将COLUMNS环境variables设置为较大的值。 例如,要将其设置为top调用:
$ COLUMNS=1000 top -c -b -n 1 > top.log
至less它在Ubuntu 9.10上的bash 4.0.33中有效。