실행 중인 명령의 최신 출력 가져오기

실행 중인 명령의 최신 출력 가져오기

오랫동안 실행 중인 명령이 있는데 이를 방해하고 싶지 않습니다. 하지만 프로세스를 계속 확인하고 싶습니다(대부분 원격으로). top등의 명령어를 통해 프로세스를 지속적으로 모니터링하고 있습니다 . 프로세스는 터미널 기반 프로세스이며 또는 유사한 명령을 통해 시작되지 않습니다. 따라서 출력을 확인하는 유일한 방법은 물리적 액세스를 사용하는 것입니다.iotopstatscreentmux

나는 그것이 /proc그 과정에 관한 많은 정보를 담고 있다는 것을 알고 있습니다. 따라서 출력(또는 출력의 마지막 배치(문자/단어/줄))도 표시할 수 있는지 궁금합니다. 검색했지만 /proc/<pid>/fd유용한 내용을 찾을 수 없습니다.

아래는 출력입니다ls -l /proc/26745/fd/*

lrwx------ 1 user user 64 Oct 28 13:19 /proc/26745/fd/0 -> /dev/pts/17
lrwx------ 1 user user 64 Oct 28 13:19 /proc/26745/fd/1 -> /dev/pts/17
lrwx------ 1 user user 64 Sep 27 22:27 /proc/26745/fd/2 -> /dev/pts/17

어떤 충고?

답변1

나는 strace그것을 사용할 것입니다 :

strace -qfp PID -e trace=write -e write=1,2

이는 write(2)PID 및 해당 하위 프로세스에 대한 모든 시스템 호출을 추적하고 파일 설명자 1과 2에 기록된 데이터를 16진수 덤프합니다.

물론, 이 과정을 통해 알 수는 없습니다.이미tty에 쓰지만 특정 시점부터 모든 쓰기가 모니터링됩니다.

또한 strace출력 형식을 변경하는 데 적합하지 않습니다. 더 많은 유연성이 필요한 경우 gdb(1)작은 프로그램을 사용하거나 작성하는 것이 좋습니다.ptrace(2)

관련 정보