ps: modificadores de saída versus controle de formato de saída

0

Em a página de manual de ps

-j Jobs format.

-f Do full-format listing.

-o format User-defined format.

$ ps -j -o ppid,sid
error: can not use output modifiers with user-defined output

$ ps -f -o ppid,sid
 PPID   SID
 3046 23122
 3046  1002
 1002  1002
 3046 13961
...

O que os modificadores de saída significam? Na página manpage de ps , -j , -f e -o estão listados em OUTPUT FORMAT CONTROL , em vez de OUTPUT MODIFIERS .

De modo geral, como os modificadores de saída são usados, em comparação com as opções de controle de formato de saída?

São opções ou argumentos de modificadores de saída?

    
por Tim 28.02.2016 / 04:18

1 resposta

1

Parece ser uma mensagem de erro enganosa.

Se você observar a procps source, arquivo common.h linha 290 :

extern unsigned        format_modifiers; /* -c -j -y -P -L... */

-j implícito format_modifiers sinalizador a ser definido, que causa o erro se usado com saída definida pelo usuário :

if(format_list){
  if(format_flags) return "Conflicting format options.";
  if(format_modifiers) return "Can't use output modifiers with user-defined output";
  if(thread_flags&TF_must_use) return "-L/-T with H/m/-m and -o/-O/o/O is nonsense";
  return NULL;
}

Uma mensagem como Não é possível usar modificadores de formato de saída com saída definida pelo usuário seria melhor.

FreeBSD ps não tem esse problema, -j opção causa ps para imprimir informações sobre user, pid, ppid, pgid, sid, jobc, state, tt, time, and command . Adicionar -o torna a saída agregada:

$ ps -j -o ppid,sid
USER     PID PPID PGID  SID JOBC STAT TT     TIME COMMAND          PPID  SID
cuonglm 1196 1195 1196 1196    0 Ss    0  0:00.02 -sh (sh)         1195 1196
cuonglm 1233 1196 1233 1196    1 R+    0  0:00.00 ps -j -o ppid,si 1196 1196

Modificadores de saída controlam como as informações exibidas, enquanto o formato de saída controla as informações what exibidas.

Exemplo o s opções é um controle de formato de saída, porque ele adicionou informações de sinal de processo para ps output:

$ ps s
  UID   PID          PENDING          BLOCKED          IGNORED           CAUGHT STAT TTY        TIME COMMAND
 1000 12831 0000000000000000 0000000000000002 0000000000384004 0000000188013003 Ss   pts/1      0:00 zsh
 1000 13067 0000000000000000 0000000000000000 0000000000000000 0000000073d3fef9 R+   pts/1      0:00 ps s

f é um modificador de saída, porque alterou a forma como a saída foi exibida:

$ ps f
  PID TTY      STAT   TIME COMMAND
12831 pts/1    Ss     0:00 zsh
13238 pts/1    R+     0:00  \_ ps f

Aqui, a saída foi exibida como hierarquia.

    
por 28.02.2016 / 13:12

Tags