프로세스를 실행하는 데 사용되는 명령

프로세스를 실행하는 데 사용되는 명령

다음을 사용하여 프로세스를 실행한다고 가정해 보겠습니다.

myapp -e -c -f myapp.config > /var/log/myapp/myapp.log 2>&1

얼마 후에 는 1234라는 pid프로세스 만 남게 됩니다 myapp. 모든 플래그가 포함된 명령을 가져오고 출력을 myapp.log어떤 방식 으로 리디렉션할 수 있는 방법이 있습니까 pid?

답변1

ps -o args= -p "$pid"

프로세스가 이후에 인수 목록을 덮어쓰지 않았다면 프로세스가 실행한 마지막 명령(또는 명령을 실행하지 않은 경우 상위 명령이 실행한 명령...)에 제공된 인수 목록을 알려줍니다.

ps공백으로 연결된 인수 목록이 표시되고 한도에 도달합니다. 일부 구현에서는 ps몇 가지 옵션을 추가하여 -w이를 늘릴 수 있습니다 . Linux에서는 에서 NUL 바이트로 구분된 인수 목록을 볼 수 있습니다 /proc/$pid/cmdline.

lsof +fg -ap "$pid" -d 0-2

프로세스의 stdin, stdout 및 stderr 파일 설명자가 가리키는 내용과 해당 파일 설명자가 열린 모드(예: 리디렉션을 사용하는 POSIX 쉘에서 W,AP와 같이 쓰기 전용이 추가됨 ) 를 알려줍니다 .>>

답변2

명령 을 사용 하고 스위치를 사용하여 ps확인하려는 pid를 지정하여 전체 목록 또는 더 자세한 긴 목록을 제공할 수 있습니다.-p-f-l

출력 예:

$ sleep 60 &
[1] 31441
$ ps -lp 31441
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 S     0 31441 31319  0  80   0 -  1423 hrtime pts/3    00:00:00 sleep
$ ps -fp 31441
UID        PID  PPID  C STIME TTY          TIME CMD
root     31441 31319  0 10:44 pts/3    00:00:00 sleep 60

그러나 이렇게 하면 로그 파일에 원하지 않는 헤더 줄이 출력됩니다. -hpid가 1234인 경우 다음 옵션을 사용하여 정리할 수 있습니다.

ps -lhp 1234 >> /var/log/myapp/myapp.log 2>&1

>>로그 파일에 추가하기 위해 리디렉션된 출력을 사용했습니다 .

답변3

를 사용하면 ps -f매개변수 목록을 검사하고 이를 임의의 파일로 리디렉션할 수도 있습니다.

따라서 이 경우에는 다음을 사용하십시오.ps -ef | grep 1234 > myapp.log

이것을 확인해주세요ps 매뉴얼 페이지.

관련 정보