43.5. SystemTap을 사용하여 파일 읽기 및 쓰기 모니터링

inodewatch.stp SystemTap 스크립트를 사용하여 실시간으로 파일에서 읽기 및 쓰기를 모니터링할 수 있습니다.

사전 요구 사항

절차

  • inodewatch.stp 스크립트를 실행합니다.
# stap --example inodewatch.stp 'argument1' 'argument2' 'argument3'

inodewatch.stp 스크립트는 세 가지 명령줄 인수를 사용합니다.

  1. 파일의 주요 장치 번호입니다.
  2. 파일의 마이너 장치 번호입니다.
  3. 파일의 inode 번호입니다.

이 번호는 다음을 사용하여 얻을 수 있습니다.

# stat -c '%D %i' filename

여기서 filename 은 절대 경로입니다.

다음 예제를 고려하십시오.

# stat -c '%D %i' /etc/crontab

출력은 다음과 같아야 합니다.

805 1078319

다음과 같습니다.

  • 805 는 기본 16 (hexadecimal) 장치 번호입니다. 마지막 두 자리는 마이너 장치 번호이고 나머지 숫자는 메이저 번호입니다.
  • 1078319 는 inode 번호입니다.

/etc/crontab 모니터링을 시작하려면 다음을 실행합니다.

# stap inodewatch.stp 0x8 0x05 1078319

처음 두 인수에서는 base-16 숫자에 0x 접두사를 사용해야 합니다.

출력에는 다음이 포함됩니다.

  • 읽기 또는 쓰기를 수행하는 프로세스의 이름 및 ID
  • 수행 중인 함수(vfs_read 또는 vfs_write)
  • 커널 장치 번호

이 예제의 출력은 다음과 같아야 합니다.

cat(16437) vfs_read 0x800005/1078319
cat(16437) vfs_read 0x800005/1078319