명시적으로 기록되지 않은 프로세스의 실행 출력을 어떻게 검사할 수 있나요?

명시적으로 기록되지 않은 프로세스의 실행 출력을 어떻게 검사할 수 있나요?

우리 머신 중 하나가 geth(이더리움 블록체인 클라이언트)를 실행하고 있습니다.

이상적으로 프로그램 출력을 검사하려면 다음과 같은 것이 있어야 합니다.

geth --datadir ./myDataDir --networkid 1114 console 2>> myEth.log

하지만 프로세스 로그를 파일로 리디렉션하는 것을 잊었다면 어떻게 될까요?

프로그램의 실행 중인 출력을 검사할 수 있는 방법이 있습니까?

중요한 프로젝트에 사용되는 프로그램이므로 프로그램을 중지하거나 실행을 직접적으로 방해할 수는 없습니다.

프로그램 로그를 확인해야 해요

도와주세요

답변1

이는 일반적으로 불가능합니다. 특히, 프로그램(또는 libc) 자체는 stdout이 실제로 파일 핸들인지 여부를 감지하고 다르게 동작할 수 있습니다.

프로세스를 크게 중단하지 않고도 프로세스에 디버거를 연결하고 로깅 호출을 가로챌 수 있습니다.

데몬이 출력하는 모든 것을 자동으로 기록하는 systemd와 같은 데몬 관리자에서 데몬을 시작하지 않는 것은 약간 특이한 일이지만 이러한 수준의 전문 지식은 암호화폐 커뮤니티의 과정과 동일합니다.

관련 정보