如何打印 ps 命令的输出及其列名称?

如何打印 ps 命令的输出及其列名称?

在RHEL 7.6的CLI中,ps命令显示许多列输出。我可以猜出其中一些的含义,但确实知道所有的含义。我可以显示 ps 命令的结果及其列名称吗?

答案1

您只需先显示列名称,然后运行命令即可。

$ ps | head -n1; ps | grep localhost

PID TTY           TIME CMD
14270 ttys001    0:00.04 ssh example@localhost

编辑:A清洁工解决方案(建议者@杰里米-博登):

$ ps | grep -E 'localhost|PID'

答案2

ps 的列标题是运行该命令时首先打印出来的内容。如果您只是想看看标头是什么,那么您可以做一些简单的事情,例如通过管道将 ps 插入 head 来查看。像这样的东西ps | head -n1只会显示列的标题。

如果您希望能够看到 ps 输出中的标头(可能很长),那么您可以将命令通过管道传输psawk.

可能有一种更聪明的方法来处理这个问题awk(或者一般来说),但这就是我要做的......我将使用ps -ef我的 ps 示例,但我认为它适用于任何事情。

ps -ef | awk '{if(NR==1){HEADER=$0} if(NR%10 == 1){print "\n"HEADER}{print $0}}'

awk 语句首先检查它是否位于第一行,如果是,则将变量设置为该行的值,我称之为HEADERif(NR==1){HEADER=$0}

但是您可能只想经常打印标题,因此下一部分是检查记录号(在本例中为行)是否能被 10 整除,如果是,则打印一个新行(将其分解并使其成为可读)和标题行。您可以将 10 更改为较小的数字以更频繁地打印标题,或将 10 更改为较大的数字以减少打印标题的频率:if(NR%10 ==1){print "\n"HEADER}

awk 语句的最后一部分只是打印 awk 所在的行,这只是ps:的常规输出{print $0}

相关内容