仅输出终端中`ps`命令的COMMAND下的列

Modified on: Thu, 14 Jun 2018 05:42:53 +0800

我知道我们可以轻松找到以下内容:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

使用以下命令执行所有正在运行的进程:

sudo ps aux

我的问题是,是否可以只显示COMMAND下的列的输出而没有其他内容?

作者:Raphael

最佳答案

使用-o标志。

仅列出您自己的流程

 ps -o command  

列出所有系统进程

 ps -e -o command

这不是列出命令的唯一方法,它们可以使用命令行标志打印,也可以只作为可执行文件打印(这是command选项所做的)。

从我的评论中得出答案:

  

命令,args和cmd都给出完整的命令。实际上是man page状态
  command和cmd是args的别名,包含 - flags。该
  comm只给出了exacutable的名字。对此的别名是ucmd
  和ucomm。我误解了AIX选项,实际上可能是这些
  使用类似printf的格式指定,%a表示args,%c表示comm

有关使用情况和可用格式选项的更多信息,请参阅man ps

程序化方法有点多余,因为ps已经为我们提供了格式化选项,但是可以使用awk来完成,这在处理时非常有用。列化输出。

ps aux | awk '{ for(i=1;i<=NF;i++) {if ( i >= 11 ) printf $i" "}; printf "\n" }'

但请注意,如果用户名包含空格,则此代码会中断,例如john doe。这可以通过添加gsub函数进行修改,该函数将从ps列表中删除您的用户名。但是,如果有多个用户登录到系统,则可能难以从输出中删除所有用户名。因此,您可以看到-o标志更受欢迎。

使用sudo

列出所有进程不需要旁注,ps


相关问答

添加新评论