Background process Linux top不以批处理模式将完整命令名作为nohup进程打印到文件

Background process Linux top不以批处理模式将完整命令名作为nohup进程打印到文件,background-process,nohup,top-command,Background Process,Nohup,Top Command,我试图从顶部查找进程的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 te

我试图从顶部查找进程的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=用于启动进程的完整参数列表

对于我来说,只需要
-c