-p opção de ps

4

Se um omite a opção -p no ps no Linux, isso é implícito se um número for fornecido.

man ps diz

      123    Identical to --pid 123.

e

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

Mas ainda dá uma saída diferente:

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

Isto está documentado em algum lugar?

    
por wolf-revo-cats 03.03.2016 / 04:12

1 resposta

3

Depende da sua implementação ps .

Pelo menos com FreeBSD ps e < a procref ps, que usado no 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.

Então, quando você fez:

ps 123

ps assume que você deseja o estilo BSD, e adiciona ao estado do processo de saída STAT column e exibe o comando args COMMAND em vez do nome do executável CMD . Com -p 123 , ps assume que você quer o estilo SysV.

A implementação

Mac OSX ps não documenta esse comportamento mas se comporta como FreeBSD ps .

Com muitas implementações, você pode substituir o estilo padrão por PS_FORMAT variável:

# 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
    
por 03.03.2016 / 05:49

Tags