Tom*_*Tom 7 linux command-line-interface top
以下命令可用于捕获当前占用 CPU 最多的进程并将其存储到文件中:
top -c -b -n 1 > top.log
Run Code Online (Sandbox Code Playgroud)
该-c
标志特别有用,因为它为您提供每个进程的命令行参数,而不仅仅是进程名称。
没有-c
:
2497 root 18 0 11264 5888 1524 S 0.0 0.1 0:03.31 miniserv.pl
Run Code Online (Sandbox Code Playgroud)
使用-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
Run Code Online (Sandbox Code Playgroud)
问题是每一行输出都会被截断以适合当前的终端窗口。如果您可以拥有一个宽终端,那么这是可以的,因为您有很多输出,但如果您的终端只有 165 个字符宽,则每个进程只能获得 165 个字符的信息,并且通常没有足够的字符来显示完整的进程命令。当命令在没有终端的情况下执行时(例如通过 cron 作业执行),这是一个特殊问题。
有谁知道如何停止top
截断数据或强制top
每行显示一定数量的字符?
这并不紧急,因为还有另一种方法可以获取按 CPU 使用率排序的前 10 个进程:
ps -eo pcpu,pmem,user,args | sort -r -k1 | head -n 10
Run Code Online (Sandbox Code Playgroud)
小智 6
您可以将COLUMNS
环境变量设置为较大的值。例如,将其设置为仅用于top
调用:
$ COLUMNS=1000 top -c -b -n 1 > top.log
Run Code Online (Sandbox Code Playgroud)
至少它可以在 Ubuntu 9.10 上的 bash 4.0.33 中运行。