2

我正在尝试从顶部查找进程的 cpu 利用率。因此在此之前我必须测试以下命令

top -b -c -d1 -n2

我正在使用 -c 选项打印完整的命令名称,因为进程名称在没有 -c 的情况下被截断。
不,当我将其作为nohup sh test.sh &运行时,输出 nohup.out 包含截断的进程名称,因此我无法对进程名称进行 grep

159 neutron   30   0  127620  22765   5479 S   0.0  0.6 399:02.56 /usr/bin/p+t

但是当我将其作为 sh test.sh 运行时,它会将完整的命令名称打印到终端。
尽管在批处理模式下对 top 命令使用了 -c,但为什么不打印完整的命令名称?

启用 -c 的命令名称和进程名称有什么区别?

或者说进程名称和命令名称不同,进程名称是通过 ps 或 top 等命令从 /proc/pid/status 中选取的?

4

1 回答 1

4

我们可以在 top 命令之前设置 COLUMNS 环境变量来增加可用宽度。

COLUMNS=1000 top -b -c -d1 -n2

另一种方法是使用 ps 通过名称查找进程的 pid 并指定 ps 输出的格式。此输出可用于馈送 top 以获取基于 pid 的进程的 cpu 使用情况。

ps -eo pid,comms,args

comms = 仅命令名称而不是 args
args = 用于启动进程的完整参数列表

于 2015-12-13T10:55:05.417 回答