실행 중인 프로세스에 대한 STDOUT 리디렉션 보기

실행 중인 프로세스에 대한 STDOUT 리디렉션 보기

다음을 사용하여 애플리케이션을 시작하면:

/path/to/my/command >> /var/log/command.log

명령이 반환되지 않는 경우 다른 프롬프트에서 STDOUT 리디렉션이 어떻게 설정되어 있는지 확인할 수 있는 방법이 있습니까?

비슷한 걸 찾고 있어요

cat /proc/PID/redirects

또는

ps -??? | grep PID

그러나 어떤 방법이든 가능합니다.

답변1

파일 설명자 #1(STDOUT)을 봅니다 /proc/$PID/fd/. 커널은 이 파일을 설명자가 리디렉션되는 파일에 대한 심볼릭 링크로 나타냅니다.

$ readlink -f /proc/20361/fd/1
/tmp/file

답변2

많은 답변에서 다음과 같이 언급합니다.

tail -f /proc/{PID}/fd/1

그러나 나는 그것이 항상 작동하는 것은 아니라는 것을 발견했습니다. 혹은 cat때로는 결과를 낳기도 합니다.

cat /proc/{PID}/fd/1

그 중 {PID}는 명령어를 이용하여 찾을 수 있습니다 ps aux.

명령 끝에 있는 숫자(이 경우 fd/1)를 다른 출력으로 변경할 수 있다는 점도 언급할 가치가 있습니다.

 /proc/{PID}/fd/0 # STDIN
 /proc/{PID}/fd/1 # STDOUT
 /proc/{PID}/fd/2 # STDERR

답변3

어떤 프로세스에 어떤 파일이 열려 있는지 확인하는 유용한 도구lsof. 특정 프로세스를 가리킬 수 있으며 기본적으로 Linux에서 얻을 수 있는 것과 동일한 정보 (어떤 파일이 열려 있는지) lsof -p1234를 볼 수 있습니다 .ls -l /proc/1234/fd

가장 유용한 방법 lsof은 그 반대입니다. 즉, lsof /path/to/file어떤 프로세스가 파일을 사용하고 있는지 알려주는 것입니다.

관련 정보