ps 的 -p 选项

ps 的 -p 选项

如果在 Linux 中省略该-p选项ps,则暗示给出了一个数字。

man ps

      123    Identical to --pid 123.

      --pid pidlist
             Select by process ID.  Identical to -p and p.

但它仍然给出不同的输出:

test@debian:~$ ps 26379
  PID TTY      STAT   TIME COMMAND
26379 pts/14   Ss     0:00 bash
test@debian:~$ ps -p 26379
  PID TTY          TIME CMD
26379 pts/14   00:00:00 bash

这是否记录在某处?

答案1

这取决于您的ps实施。

至少与FreeBSD 的 psprocps ps,在Linux中使用:

1   UNIX options, which may be grouped and must be preceded by a dash.
2   BSD options, which may be grouped and must not be used with a dash.
3   GNU long options, which are preceded by two dashes.

所以当你这样做时:

ps 123

ps假设您想要 BSD 风格,并添加到输出进程状态STAT列并显示命令 argsCOMMAND而不是可执行文件名称CMD。使用-p 123ps假设您想要 SysV 风格。


Mac OSX ps实现没有记录此行为,但行为类似于 FreeBSD ps


对于许多实现,您可以使用以下命令覆盖默认样式PS_FORMAT多变的:

# SysV style when using dash `-` in arguments
$ ps -p 1
    PID TTY          TIME CMD
      1 ?        00:00:01 systemd

# Force BSD style even using dash `-` in arguments
$ PS_FORMAT=DefBSD ps -p 1
    PID TTY      STAT   TIME COMMAND
      1 ?        Ss     0:01 /sbin/init

相关内容