每行列出一个进程的 Linux 命令

每行列出一个进程的 Linux 命令

有没有办法限制输出,比如说 ps aux | grep word,让每个进程显示在单独的单身的线?

我需要这个,因为我的进程描述占用了很多行,而使用上述命令列出它们时,我没有很好的可视性。我很高兴只看到每个进程表示的第一行。

答案1

实际上,每个过程已经显示在一行上,这就是为什么grep会显示那么多信息。

如果您愿意牺牲“COMMAND”列提供的细节量ps aux,您可以像这样修剪输出:

ps aux | awk '/word/ {print $1"\t"$2"\t"$3"\t"$4"\t"$9"\t"$11}'

查找awk包含图案“单词”的行并打印:

USER、PID、%CPU、%MEM、START 和 COMMAND 列中的第一个字符串(以空格分隔),全部以 TAB('\t') 分隔

答案2

您可能会发现该pstree命令很有用。它以树形图的形式列出所有进程。

答案3

ps aux输出直接到终端时,该命令会将命令部分限制为屏幕的宽度。

当输出通过管道传输到命令时,行为会有所不同,但通常宽度不受限制。如果您想以相同的方式限制它,可以使用该命令:

ps aux --witdh ${COLUMNS:-80} | grep word

当然,如果word不是在显示的字符中而是在截断的字符中,那么这是行不通的。

以下是一些替代方案:

ps aux | awk '/word/ {print substr($0,1,'${COLUMNS:-80}')}'

ps -up $(pgrep -f word|tr '\n' ','| sed 's/,$//') 

相关内容