如何使用 ps 按 STAT 进行过滤?

如何使用 ps 按 STAT 进行过滤?

我试图获取 STAT 列对应的值为 X 的所有进程。

我已经使用 awk 完成了此操作 ps -aux | awk {'if ($8 == "S") print $8" "$11'}

但是,我想不使用 ps 以外的程序来完成此操作。有办法吗?

答案1

ps过滤功能有限,但即使ps是具有无数选项的 Linux 也无法按状态进行过滤。所以你需要一个外部过滤工具。

您可以简化选项集。-ax相当于便携式-e显示所有进程。您可以使用-oawk 来代替计数和选择列。

ps -e -o stat,command | grep '^S '

答案2

不,可能没有办法。ps有一些进程选择选项,但是(至少是我系统上的选项)没有一种方法来过滤状态。您可以检查man ps系统上的手册页 ( ) 进行确认。

请注意,它使用awkgrep等来查找您感兴趣的输出位,这是使用 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

相关内容