-p вариант ps

Если в 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