如果在 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 的 ps和procps 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 123
,ps
假设您想要 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