如何更改以批处理模式运行的“ top” linux命令的输出线长

以下命令对于捕获占用最多CPU的当前进程并将其存储到文件非常有用:

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

The -c flag is particularly useful because it gives you the command line arguments of each process rather than just the process name.

Without -c:

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

With -c (additional useful command info):

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作业来执行该命令。

Does anyone know how to stop top truncating data or force top to display a certain number of characters per line?

这不是紧急的,因为有一种替代方法可以按CPU使用率排序前10个进程:

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