43.5. SystemTap を使用したファイルの読み取りと書き込みの監視

inodewatch.stp SystemTap スクリプトを使用すると、ファイルの読み取りと書き込みをリアルタイムで監視できます。

前提条件

手順

  • inodewatch.stp スクリプトを実行します。
# stap --example inodewatch.stp 'argument1' 'argument2' 'argument3'

スクリプト inodewatch.stp では、コマンドラインの引数を 3 つ使用します。

  1. ファイルのメジャーデバイス番号。
  2. ファイルのマイナーデバイス番号。
  3. ファイルの inode 番号。

この番号は、以下を使用して取得できます。

# stat -c '%D %i' filename

filename は絶対パスです。

以下の例を見てみましょう。

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

出力は以下のようになります。

805 1078319

ここでは、以下のようになります。

  • 805 は、ベース 16 (16 進数) のデバイス番号です。最後の 2 桁はマイナーデバイス番号で、残りの 2 桁はメジャー番号です。
  • 1078319 は、inode 番号です。

/etc/crontab の監視を開始するには、次のコマンドを実行します。

# stap inodewatch.stp 0x8 0x05 1078319

最初の 2 つの引数では、基数 16 の数に 0x の接頭辞を使用する必要があります。

この出力には、以下が含まれます。

  • 読み取りまたは書き込みを実行するプロセスの名前と ID
  • 実行中の機能 (vfs_read または vfs_write)
  • カーネルデバイス番号

この例の出力は、以下のようになります。

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