有一个top
命令可以显示正在运行的进程。我想打印 field 中唯一值的排序列表COMMAND
。我有这个任务的解决方案
$ top -b -n 1 | tail -n+8 | awk '{print $12}' | cut -d'/' -f 1 | sort | uniq
然而,对于如此简单的目的来说,这个命令太冗长了。对于该任务有更简单的解决方案吗?
附:我可以使用ps
代替top
,但它返回的格式太嘈杂:chrome
vs /opt/google/chrome/chrome --type=renderer --enable- features=LinuxObsoleteSystemIsEndOfTheLine<LinuxObsoleteSystemIsEndOfTheLine --lang=en-US --force-
...这只是命令的开始。
答案1
我强烈建议仔细阅读ps
.
这可能是一个有趣的开始:
ps -eo comm=,
或者
ps -eo cmd=,
你可能想要第一个。
如果您想要绝对细粒度的控制,请读取Name
: 行/proc/nnnnnn/status
(或解析 中括号之间的字符串stat
),其中nnnnn
代表所有数字。对于完整的命令行,读取/proc/nnnnnn/cmdline
并将文件中的 NUL 字节转换为空格字符。
请注意,ps
BSD(作为该生态系统的一部分提供)与 Linux 版本(由 procps-ng 项目提供给 Linux)略有不同,并且两者对选项的解释也略有不同。如果您曾经使用过 *BSD,则值得注意。