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

标签 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 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/

相关文章:

Swift - 内部有后台线程的退出函数

c# - 如何在后台任务中使用具有依赖性的作用域服务

Symfony2 在后台运行控制台命令

Linux 脚本 - 如何在注销时保持运行?

bash - 为什么以下 bash 脚本在使用 nohup 调用时不起作用?

ruby - 如何在 Linux 上运行 Ruby 脚本并在 TOP COMMAND 中显示脚本名称而不是 Ruby?

linux - 如何将 Unix 'Top' 命令输出捕获到 CSV 文件?

linux - 如何根据 Linux 系统调用实现后台进程?

Java 日志记录和 Unix Nohup 问题

java - 显示线程的 top 命令——这是某种延迟吗?