我试图从顶部找到进程的 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 运行时,它会将完整的命令名称打印到终端。
尽管在批处理模式下使用 -c 作为 top 命令,为什么没有打印完整的命令名称?
启用 -c 的命令名和进程名有什么区别?
或者说进程名称和命令名称不同,并且进程名称是通过 ps 或 top 等命令从/proc/pid/status 中选取的?
最佳答案
我们可以在top命令之前设置COLUMNS环境变量来增加可用宽度。
COLUMNS=1000 top -b -c -d1 -n2
另一种方法是使用 ps 通过进程名称查找 pid,并指定 ps 输出的格式。此输出可用于提供 top 以根据 pid 获取进程的 cpu 使用情况。
ps -eo pid,comms,args
comms = 仅命令名称而不是参数
args = 用于启动进程的完整参数列表
关于background-process - Linux top 不以批处理模式将完整命令名作为 nohup 进程打印到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34231948/