22.3. opensnoop을 사용하여 명령으로 열린 파일 추적
BCC(BPF Compiler Collection)의 opensnoop 툴을 사용하여 특정 명령으로 실시간으로 파일 액세스를 모니터링하고 기록할 수 있습니다. 이 기능은 애플리케이션의 런타임 동작을 디버깅, 감사 또는 이해하는 데 유용합니다.
프로세스
한 터미널에서
opensnoop프로그램을 실행하여uname명령 프로세스에서만 열린 파일의 출력을 출력합니다.# /usr/share/bcc/tools/opensnoop -n uname다른 터미널에서 명령을 입력하여 특정 파일을 엽니다.
$ uname The terminal running opensnoop shows the output similar to the following: PID COMM FD ERR PATH 8596 uname 3 0 /etc/ld.so.cache 8596 uname 3 0 /lib64/libc.so.6 8596 uname 3 0 /usr/lib/locale/locale-archive ...opensnoop프로그램은 전체 시스템에서open()시스템 호출을 감시하고uname이 동시에 열려고 하는 각 파일의 출력을 출력합니다.opensnoop출력에는 다음 필드가 표시됩니다.- PID
- 프로세스 ID입니다. (8596)
- COMM
-
프로세스 이름입니다. (
uname) - FD
- 파일 설명자 - open()이 열려 있는 파일을 참조하기 위해 반환하는 값입니다. (3)
- ERR
- 모든 오류.
- 경로
open()이 열려고 하는 파일의 위치입니다.명령이 존재하지 않는 파일을 읽으려고 하면 FD 열은
-1을 반환하고 ERR 열은 관련 오류에 해당하는 값을 출력합니다.opensnoop을 사용하면 제대로 작동하지 않는 애플리케이션을 식별할 수 있습니다. 자세한 내용은 시스템의/usr/share/bcc/tools/doc/opensnoop_example.txt파일 및open(2)매뉴얼 페이지를 참조하십시오.