Если в Linux нет опций -p
в Linux, это подразумевается, если задано число.
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
Это где-то документально?
Это зависит от вашей реализации 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
состояния процесса вывода и команду отображения args COMMAND
вместо исполняемого имени 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