여러 하위 프로세스를 생성하는 프로그램이 있습니다.
이 프로그램과 그 하위 프로그램이 어떤 파일을 생성, 삭제, 수정하는지 알고 싶습니다.
inotifywait
어떤 파일이 액세스되고 있는지 알려줄 수 있지만 어떤 프로세스가 액세스하고 있는지는 알 수 없습니다. 그리고 모니터를 설정하려면 파일이 어디에 생성되는지 알아야 합니다.auditctl
어떤 프로세스가 파일을 수정하는지 기록할 수 있지만, 다시 한번 기록을 설정하려면 파일이 어디에 있는지 알아야 합니다.lsof
모든 파일을 알려 주지만 실시간 추적에는 좋은 솔루션이 아닌 것 같습니다.
어떤 파일이 조작될지 미리 알지 않고도 프로그램의 파일 조작을 모니터링할 수 있는 것이 있습니까?
답변1
Linux에서는 다음과 같은 종류의 이벤트를 모니터링하는 데 사용할 수 있습니다 strace
.
strace -f -p <PID> -e trace=file
솔라리스에서는 dtrace
. opensnoop
에서 Solaris 11에 기본적으로 설치되는 DTraceToolkit 도구를 살펴보십시오 /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가 어쨌든 있습니다.