在ps输出中禁用列名


23

如何格式化ps -p命令输出?

为了不让我看到这样的东西:

PID TTY                TIME CMD

但只有PID。

我正在使用Linux。

Answers:



21

使用--no-headers删除标题行。

原始输出:

ps
  PID TTY          TIME CMD
27027 pts/0    00:00:00 bash
27071 pts/0    00:00:00 ps

--no-headers

ps --no-headers
27027 pts/0    00:00:00 bash
27072 pts/0    00:00:00 ps

-p

ps -p 1 --no-headers
    1 ?        00:00:33 systemd

man页面ps明确记录了以下内容:

man ps

[snip]

 --no-headers
          Print no header line at all.  --no-heading is an alias for this option.

2
不适用于macOS。Naturall -____-
Avindra Goolcharan '02

确实。没想到可以在MacOS上使用。正如原始海报所强调的那样,问题仅涉及Linux。
史蒂夫

2
史蒂夫·史蒂夫。只需在此处进行记录以供将来的读者使用。BSD和Linux实用程序之间的细微差别令人非常恼火。SED是最糟糕的
Avindra Goolcharan

好的,谢谢。如果您对如何在答案中包含MacOS解决方案有任何想法,我会很乐意对其进行修改!
史蒂夫·

2
我发现对于特定的列标题,将 =在列名后添加o标志是一种跨平台的方法。例如,ps -p ${pid} -o state=将显示的处理状态${pid},不包含标题。(以下是可接受的答案:))
Avindra Goolcharan '17

2

使用

ps -p <PIDs> --no-headers

获取没有标题的PID列表。


-1

要获取仅PID的列表,请使用:

ps -eo pid

另请参阅man ps“标准格式规范”部分以获取可能的列。

我个人喜欢Solaris显示可能用于该-o参数的列的方式:

ps: option requires an argument -- o
usage: ps [ -aAdefHlcjLPyZ ] [ -o format ] [ -t termlist ]
        [ -u userlist ] [ -U userlist ] [ -G grouplist ]
        [ -p proclist ] [ -g pgrplist ] [ -s sidlist ] [ -z zonelist ] [-h lgrplist]
  'format' is one or more of:
        user ruser group rgroup uid ruid gid rgid pid ppid pgid sid taskid ctid
        pri opri pcpu pmem vsz rss osz nice class time etime stime zone zoneid
        f s c lwp nlwp psr tty addr wchan fname comm args projid project pset lgrp

1
这不能解决删除显示的标题的问题。
库萨兰达

这就是您解释“仅显示PID”的方式。有些人可以只选择一列就可以解释这一点,或者您显然可以解释为:值。
兰伯特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.