我查看了 man ps 并发现使用 ww 可以得到完整的命令。但是运行:
ps ww axco command,pcpu
没有给出完整的命令名称。我想要完整的进程名称。结果如下:
gnome-fallback- 0.0 39312
有什么建议吗?
在 Ubuntu 上运行
答案1
以下c
情况ax
导致了您的问题。这导致命令输出被截断为 15 个字符comm
。
c 显示真正的命令名称。这是从可执行文件的名称派生而来的,而不是从 argv 值派生而来的。因此不会显示命令参数及其任何修改(参见 setproctitle(3))。此选项可有效地将 args 格式关键字转换为 comm 格式关键字;它与 -f 格式选项以及各种 BSD 样式格式选项一起使用,这些选项通常都显示命令参数。请参阅 -f 选项、格式关键字 args 和格式关键字 comm
更新
我认为您不能直接使用 ps 执行您想要的操作。看起来 ps 会显示命令行的某些部分或命令名称的前 15 个字符,具体取决于设置的选项。
之后事情就变得混乱了……
ps -eo command:400,pcpu |awk '{print $1,$NF}'| sed '/^\// s|/| |g' | awk '{print $(NF-1), $NF}'
- 从 ps 获取命令行和 pcpu(希望 400 个字符足够)
- 打印第一个和最后一个字段 /path/to/long-command-name-here 0.0
- 删除以 / 开头的行中的所有 /
- 打印结果的最后两个字段,即名称和 pcpu