我试图获取 STAT 列对应的值为 X 的所有进程。
我已经使用 awk 完成了此操作
ps -aux | awk {'if ($8 == "S") print $8" "$11'}
但是,我想不使用 ps 以外的程序来完成此操作。有办法吗?
答案1
ps
过滤功能有限,但即使ps
是具有无数选项的 Linux 也无法按状态进行过滤。所以你需要一个外部过滤工具。
您可以简化选项集。-ax
相当于便携式-e
显示所有进程。您可以使用-o
awk 来代替计数和选择列。
ps -e -o stat,command | grep '^S '
答案2
不,可能没有办法。ps
有一些进程选择选项,但是(至少是我系统上的选项)没有一种方法来过滤状态。您可以检查man ps
系统上的手册页 ( ) 进行确认。
请注意,它使用awk
、grep
等来查找您感兴趣的输出位,这是使用 Linux/Unix shell 的正常预期方式。如果您经常这样做,并且想要避免重新键入它,您可以使用您.bashrc
或类似中定义的 shell 函数,或者将 shell 脚本放在$PATH
(通常,$HOME/bin
) 中的某个位置。
例如,一个 shell 函数采用一个参数(要查找的状态):
ps_for_stat() {
ps -aux | awk {'if ($8 == "'"$1"'") print $8" "$11'}
}
然后你可以运行:ps_for_stat S