ps: 출력 수정자 및 출력 형식 제어

ps: 출력 수정자 및 출력 형식 제어

존재하다맨페이지ps

-j 위치 형식.

-f 완전한 형식의 목록을 만드세요.

-o 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
...

무엇인가요출력 수정자의미는? 맨페이지에서 ps, -j-f는 대신 , -o아래에 나열되어 있습니다 .OUTPUT FORMAT CONTROLOUTPUT MODIFIERS

일반적으로 출력 형식 제어 옵션과 비교하여 출력 수정자를 어떻게 사용합니까?

출력 수정자는 옵션입니까 아니면 매개변수입니까?

답변1

이는 오해의 소지가 있는 오류 메시지인 것 같습니다.

procps소스코드를 보면 해당 파일이common.h290번 국도:

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

-jformat_modifiers설정할 암시적 플래그,사용자 정의 출력과 함께 사용하면 오류가 발생합니다.:

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;
}

이런 소식출력을 사용할 수 없습니다형식 수정자사용자 정의 출력 있음더 좋아질 것입니다.


FreeBSD에는 ps이 문제가 없습니다. Cause 인쇄 -j옵션을 사용하면 출력이 집계됩니다.psuser, pid, ppid, pgid, sid, jobc, state, tt, time, and command-o

$ 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

출력 수정자 제어어떻게정보 표시 및 출력 형식 제어 제어무엇정보가 표시됩니다.

예를 들어 옵션은 출력 s에 프로세스 신호 정보를 추가하기 때문에 출력 형식 제어입니다 .ps

$ 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출력 표시 방법을 변경하기 때문에 출력 수정자입니다.

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

이 출력은 계층 구조로 표시됩니다.

관련 정보