실행 중인 프로세스에서 출력 가져오기

실행 중인 프로세스에서 출력 가져오기

출력에 액세스하려는 Linux 시스템에서 실행 중인 프로세스가 있습니다. 제가 담았던 docker exec전용 용기에 들어있어요 su. 나는 ps볼 수 있다:

UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 18:45 ?        00:00:00 python ./manage.py runserver

난 이걸 할 수 있을 것 같아

fg 1

그러나 그것은 작동하지 않았습니다. 이미 실행 중인 프로세스의 출력을 어떻게 캡처할 수 있나요?

답변1

사용docker logs <yourcontainer>호스트의 표준 출력을 읽습니다. 출력을 유지하기 위해 추가되었습니다 --follow.

답변2

fg현재 터미널에서 작업(또는 프로세스)을 실행하고 일시 중지(예: Ctrl+ 사용 Z) 및/또는 백그라운드에서 실행되도록 보내기(예: 사용 ) 만 가능합니다 . bgPID 1은 거의 발생하지 않습니다.존재하다현재 터미널에는 일반적으로 표준 입력, 출력 및 오류 스트림이 에 바인딩되어 있습니다 /dev/null.

$ sudo ls -l /proc/1/fd/{0,1,2}
lrwx------ 1 root root 64 Mar 28 15:13 /proc/1/fd/0 -> /dev/null
lrwx------ 1 root root 64 Mar 28 15:13 /proc/1/fd/1 -> /dev/null
lrwx------ 1 root root 64 Mar 28 15:13 /proc/1/fd/2 -> /dev/null

자신이 소유한 프로세스에 대한 파일 설명자만 확인할 수 있으며 이것이 sudo여기서 필요한 이유입니다. 모든 프로세스에서 이러한 설명자는 다음과 같이 작동합니다.

  • fd/0- 표준 입력
  • fd/1- 표준 출력
  • fd/2- 표준 에러

관련 정보