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

Linux top not printing full command name to file in batch mode as a nohup process

我试图从 top.So 中找到进程的 cpu 利用率,在此之前我必须测试以下命令

top -b -c -d1 -n2

我正在使用 -c 选项打印完整的命令名称,因为进程名称在没有 -c 的情况下得到 t运行。
不,当我 运行 this as nohup sh test.sh & 时,输出 nohup.out 包含 t运行cated 进程名称,因此我无法对进程名称进行 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中挑选出来的?

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

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

另一种方法是使用 ps 通过名称查找进程的 pid 并指定 ps 的格式 output.This 输出可用于提供顶部获取基于 pid 的进程的 cpu 用法。

ps -eo pid,comms,args

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