여러 하위 프로세스를 생성하는 프로그램이 있습니다.
이 프로그램과 해당 서브루틴이 어떤 파일을 생성, 삭제, 수정하는지 알고 싶습니다.
inotifywait
어떤 파일이 액세스되고 있는지 알려줄 수 있지만 어떤 프로세스가 해당 파일에 액세스하고 있는지는 알 수 없습니다. 모니터를 설정하려면 파일을 어디서 생성해야 하는지 알아야 합니다.auditctl
어떤 프로세스가 파일을 수정했는지 기록할 수 있지만, 기록을 설정하려면 파일이 어디에 있는지 알아야 합니다.lsof
모든 파일을 표시하지만 실시간 추적을 위한 좋은 솔루션은 아닌 것 같습니다.
어떤 파일이 작동되는지 알지 못한 채 프로그램의 파일 작동을 모니터링할 수 있는 기능이 있습니까?
답변1
Linux에서는 strace
다음 유형의 이벤트를 모니터링할 수 있습니다.
strace -f -p <PID> -e trace=file
Solaris에서는 를 사용할 수 있습니다 . Solaris 11에 기본적으로 설치되는 dtrace
DTraceToolkit 도구를 살펴보세요 .opensnoop
/usr/dtrace/DTT/Bin/opensnoop
/usr/dtrace/DTT/Bin/opensnoop -p <pid>
답변2
Linux의 경우: Brendengreg의 perf-tools의 opensnoop이 작업을 수행해야 합니다. https://github.com/brendangregg/perf-tools
Solaris Dtrace의 경우 어쨌든 있습니다.