출력에 액세스하려는 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) 및/또는 백그라운드에서 실행되도록 보내기(예: 사용 ) 만 가능합니다 . bg
PID 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
- 표준 에러