프로세스에서 Tail을 사용하면 문자 입력 지연 및 중단이 발생합니다.

프로세스에서 Tail을 사용하면 문자 입력 지연 및 중단이 발생합니다.

내 말은이것실행 중인 다른 프로세스의 표준 출력을 모니터링할 수 있는지 알아보는 질문입니다. 다음을 사용하여 제안된 답변 중 하나입니다 tail -f /proc/<PID>/fd/1. 그래서 이를 시험해 보기 위해 두 개의 터미널 세션을 열었습니다. 첫 번째 터미널에서는 echo PID 를 사용합니다 echo $$. 두 번째 터미널에서는 루트 권한 없이 tail 명령을 실행했습니다. 그런 다음 첫 번째 터미널의 IO에서 눈에 띄는 정지 현상을 발견했습니다(셸 입력이 중단되고 눈에 띄는 키 누름 지연이 발생했습니다). 왜 이런 일이 발생합니까?

우분투 18.04를 실행 중입니다.

답변1

달리기는 strace tail -f /proc/<PID>/fd/1단서를 제공합니다.

출력의 마지막 줄에는 tail명령이 프로세스에서 읽기를 기다리고 있음이 표시됩니다.

읽기(3,

원래 프로세스에 들어가면 일부 문자가 프로세스에 나타나고 일부 문자가 strace명령 출력에 나타납니다. 예를 들어 원래 프로세스에 "1234"를 입력하면 원래 프로세스에서는 24가 표시되고 출력에는 다음 줄이 표시될 수 있습니다 strace.

읽기(3,"1",8192)=1
읽기(3,"3",8192)=1

tail없이 실행할 때는 명확하지 않지만 strace명령 tail은 입력한 내용에 액세스하기 위해 원래 프로세스와 경쟁합니다.

관련 정보