我正在记录输出:top -b -n1 -c
以便我可以跟踪哪些进程每分钟使用了多少内存和 CPU。当 top 显示完整命令行 ( -c
) 时,命令行文本会在屏幕边缘被截断。这在终端中运行和显示时非常完美。但是,我正在将 STDOUT 发送到文件以供稍后解析,并希望记录完整的命令名称。有没有办法可以告诉 top 使用特定的屏幕宽度?(我知道它的最大宽度为 512,这样就没问题了)
有没有更好的方法来实现类似的目标:获取哪些进程正在运行以及它们消耗了多少资源的定期统计数据?
答案1
这似乎有效:
COLUMNS=512 top -b -n1 -c
不过,这似乎用空格填充了 512 列的行,至少在输出通过管道传输到另一个程序时是这样,因此您可能需要像这样过滤输出:
COLUMNS=512 top -b -n1 -c | sed 's/ *$//'
其中星号前面有两个空格字符。
答案2
我猜top
其实不应该这样用,你应该使用ps
。
$ ps axv
PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND
1 ? Ss 0:07 314 31 3908 24 0.0 init [3]
2 ? S 0:00 0 0 0 0 0.0 [kthreadd]
3 ? S 0:06 0 0 0 0 0.0 [ksoftirqd/0]
4 ? S 0:12 0 0 0 0 0.0 [migration/0]
5 ? S 0:10 0 0 0 0 0.0 [migration/1]
6 ? S 0:05 0 0 0 0 0.0 [ksoftirqd/1]
....
请参阅man 1 ps
查看详细的选项列表。