추가 읽기

추가 읽기

Linux에서 ps출력 :

UID          PID    PPID  C STIME TTY          TIME CMD

ps -luFreeBSD에서는 또는 명령을 사용하여 유사하지만 다른 출력을 얻을 수 있습니다 ps -ju. 후자의 문제점은 명령의 출력 중간에 공백이 포함될 수 있기 때문에 구문 분석이 어렵다는 것입니다.

UID   PID  PPID  C PRI NI   VSZ  RSS MWCHAN   STAT TT       TIME COMMAND          USER  %CPU %MEM STARTED

또는

USER   PID  PPID  PGID   SID JOBC STAT TT       TIME COMMAND           %CPU %MEM   VSZ  RSS STARTED

man ps매우 명확하지는 않지만 출력이 변경될 수 있음을 의미할 수 있는 일부 정보가 포함되어 있습니다. 이것이 가능한지 설명할 수 있는 사람이 있나요?

답변1

command 에서 가능한 공백으로 인해 출력을 구문 분석하는 데 문제가 있다고 언급했으므로 psFreeBSD의 또는 출력 열 COMMAND오른쪽에 있는 열에 뭔가를 원한다고 가정합니다.ps -lups -ju

COMMANDLinux 출력에서도 열 오른쪽에 있는 유일한 데이터 (말한 것처럼 간단하지는 않음)는 명령의 시작 시간입니다. 이것이 원하는 것이 아니라면 질문을 업데이트하십시오.ps -fps

따라서 사용할 수 있는 명령의 시작 시간을 원한다고 가정합니다.

ps -opid,start,command

... FreeBSD에서는 PID, 및 필드만 가져옵니다 STARTED.COMMAND

예:

$ ps -opid,start,command -p $(pgrep -x mosh-server)
 PID STARTED COMMAND
1964 13:06   mosh-server new -c 8 -s -l LC_CTYPE=UTF-8
2059 13:08   mosh-server new -c 8 -s -l LC_CTYPE=UTF-8

필요에 따라 필드 순서를 변경하거나 필드를 추가 및 제거할 수 있습니다.

바라보다수동 KEYWORDS부분ps(1)FreeBSD 시스템에서 사용 가능한 필드 목록을 가져옵니다.

답변2

-ops출력되는 필드를 정확하게 제어할 수 있는 단일 Unix 사양 표준 옵션입니다 .

$ /bin/ps -ouid,pid,ppid,lstart,tty,time,args $$
 UID   PID  PPID STARTED                  TTY      TIME COMMAND
1001 40585 40133 Sat 27 May 21:59:32 2023 pts/3 0:00.03 yash -o posix
$

FreeBSD 출력에서 ​​계정 명령 이름, 인수, 환경, 시작 시간 및 기타 여러 필드에는 공백이 포함될 수 있습니다 ps. 실제로 ps이는 Linux 기반 운영 체제의 propcps에도 해당됩니다. 일반적으로 표준 출력은 ps기계에서 구문 분석할 수 없습니다. 사람이 읽을 수 있는 형식입니다.

ps나는 실제로 기계 분석 가능성을 원했기 때문에 그 출력 을 작성했습니다 .기계 분석이 가능합니다. 필드에는 그래픽 문자만 포함되며 탭 문자로 구분됩니다. 이것은 awk -F'\t'다른 것에 보내는 데 이상적입니다. 아이러니하게도 이렇게 awk하면 , 및 보다 더 복잡한 필터를 수행할 수 있기 때문에 프로세스 테이블에서 내가 보고 싶은 부분을 선택하기가 더 쉬워집니다 .-A-a-x

$ ps -ouid,pid,ppid,stime,tty,time,args -p $$
UID     PID     PPID    STIME   TT      TIME    COMMAND
1001    40585   40133   2023-05-27\04021:59:32\040+0100 pts/3   \0400.031421s   yash\040-o\040posix
$

물론, unvis이는 FreeBSD 인코딩 중 하나일 뿐이므로 사람이 읽을 수 있는 형식으로 얻기 위해 항상 파이프를 사용할 수 있습니다 vis.

$ ps -ouid,pid,ppid,stime,tty,time,args -p $$ | unvis
UID     PID     PPID    STIME   TT      TIME    COMMAND
1001    40585   40133   2023-05-27 21:59:32 +0100       pts/3    0.032331s      yash -o posix
$

내가 일반적으로 하는 일은 스크립트의 루프에서 실행하는 것이지만 awk일반적으로 흥미로운 프로세스를 선택하여 파이프한 다음 console-flat-table-viewer.

추가 읽기

  • ps. 주문하다.스낵 가이드. 조나단 드 보인 폴라드.
  • console-flat-table-viewer. 주문하다.스낵 가이드. 조나단 드 보인 폴라드.

관련 정보