Skip to content

ファイルシステムへのアクセスをモニタする

上手くアプリケーションが起動せず、ログファイルを見ても合致するようなログが無い場合などに直接、ファイルシステムへのアクセスをモニタすると問題の解決に役立つ場合があります。こういった場合は fs_usage コマンドを使うと Max OS X がファイルシステムへアクセスする様子をリアルタイムにモニタすることが出来ます。

fs_usage 以外にも OS のモニタに役立つコマンドは存在します。その他のツールについては以下のサイトによくまとまっています。

  • http://developer.apple.com/jp/technotes/tn2124.html

使い方

fs_usage には以下のオプションを指定することが出来ます。尚、fs_usage を実行するには root 権限が必要です。

  • -e
    • 指定したプロセス以外からのファイルシステムへのアクセスをモニタします。
  • -w
    • より詳細にモニタ状況を表示します。
  • -f
    • フィルタを設定します。このオプションを指定しない場合、フィルタは設定されず、全てのモニタ結果が表示されます。指定可能なフィルタモードは以下の三種類です。
      • filesys
        • ファイルシステムに関連するモニタ結果だけを表示します。
      • network
        • ネットワークに関連するモニタ結果だけを表示します。
      • cachehit
        • キャッシュにヒットした結果も表示します。

オプションを指定した後、モニタしたい対象プロセス ID か、もしくはコマンド名を指定します。プロセス ID(または、コマンド名)を省略した場合、ファイルシステムへの全てのアクセスがモニタされます。fs_usage を停止したい場合は Ctrl + C を押してプロセスを停止します。

実行例 - vim がファイルシステムへアクセスする状況をモニタする

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
$ sudo fs_usage -w vim
22:25:46.181  read              F=0    B=0x1                                    0.000005   vim
22:25:46.181  select                   S=0                                      0.000004   vim
22:25:46.181  write             F=1    B=0x1                                    0.000006   vim
22:25:46.181  stat64                                 /Users/eco/test.txt        0.000014   vim
22:25:46.181  access                       (_W__)    /Users/eco/test.txt        0.000004   vim
22:25:46.181  open              F=3        (R_____)  .                          0.000033   vim
22:25:46.181  fstat64           F=3                                             0.000003   vim
22:25:46.181  fcntl             F=3   <GETPATH>                                 0.000004   vim
22:25:46.181  close             F=3                                             0.000005   vim
22:25:46.181  stat64                                 /Users/eco                 0.000013   vim
22:25:46.181  select                   S=0                                      0.000005   vim
22:25:46.181  open              F=3        (R_____)  .                          0.000005   vim
22:25:46.181  fstat64           F=3                                             0.000002   vim
22:25:46.181  fcntl             F=3   <GETPATH>                                 0.000002   vim
22:25:46.181  close             F=3                                             0.000003   vim
22:25:46.181  stat64                                 /Users/eco                 0.000003   vim
22:25:46.181  write             F=1    B=0xb                                    0.000012   vim
22:25:46.181  stat64                                 test.txt                   0.000006   vim
22:25:46.181  access                       (_W__)    test.txt                   0.000003   vim
22:25:46.181  stat_extended64        [ 14]                                      0.000004   vim
22:25:46.181  listxattr                              test.txt                   0.000005   vim
22:25:46.181  lstat64                                test.txt                   0.000004   vim
22:25:46.181  lstat64                [  2]           4913                       0.000017   vim
22:25:46.181  open              F=3        (_WC__E)  4913                       0.000093   vim
22:25:46.181  fchown            F=3                                             0.000015   vim
22:25:46.181  stat64                                 4913                       0.000005   vim
22:25:46.181  close             F=3                                             0.000004   vim
22:25:46.181  unlink                                 4913                       0.000067   vim
22:25:46.181  stat64                 [  2]           test.txt~                  0.000009   vim
22:25:46.181  stat64                                 test.txt                   0.000004   vim
22:25:46.181  stat64                 [  2]           test.txt~                  0.000002   vim
22:25:46.181  unlink                 [  2]           test.txt~                  0.000002   vim
22:25:46.182  rename                                 test.txt                   0.000060   vim
22:25:46.182  fsync             F=4                                             0.000004   vim
22:25:46.182  open              F=3        (_WC_T_)  test.txt                   0.000048   vim
22:25:46.182  write             F=3    B=0x44                                   0.000024   vim
22:25:46.182  fsync             F=3                                             0.000306 W vim
22:25:46.182  stat64                                 test.txt                   0.000006   vim
22:25:46.182  stat64                                 test.txt                   0.000003   vim
22:25:46.182  close             F=3                                             0.000008   vim
22:25:46.182  chmod             <rw-r--r-->          test.txt                   0.000015   vim
22:25:46.182  write             F=1    B=0x28                                   0.000007   vim
22:25:46.182  lseek             F=4    O=0x00000000         <SEEK_SET>          0.000002   vim
22:25:46.182  write             F=4    B=0x1000                                 0.000010   vim
22:25:46.182  select                   S=0                                      0.000005   vim
22:25:46.182  stat64                                 /Users/eco/test.txt        0.000008   vim
22:25:46.182  unlink                                 test.txt~                  0.000058   vim
22:25:46.182  open              F=3        (R_____)  .                          0.000007   vim
22:25:46.182  fstat64           F=3                                             0.000003   vim
22:25:46.182  fcntl             F=3   <GETPATH>                                 0.000003   vim
22:25:46.182  close             F=3                                             0.000003   vim
22:25:46.182  stat64                                 /Users/eco                 0.000004   vim
22:25:46.182  write             F=1    B=0x76                                   0.000009   vim
22:25:46.183  write             F=1    B=0x31                                   0.000006   vim
22:25:46.183  select                   S=0                                      0.000006   vim
22:25:46.183  write             F=1    B=0x65                                   0.000004   vim
22:25:50.183  select                   S=0                                      4.000120 W vim
22:25:50.183  lseek             F=4    O=0x00000000         <SEEK_SET>          0.000006   vim
22:25:50.183  write             F=4    B=0x1000                                 0.000022   vim
22:25:50.183  select                   S=0                                      0.000011   vim
22:25:50.183  select                   S=0                                      0.000004   vim

実行例 - FireFox がネットワークへアクセスする状況をモニタする

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
$ sudo fs_usage -w -f network firefox-bin
22:53:44.674  socketpair                                                    0.000017   firefox-bin
22:53:44.674  sendto            F=26   B=0x3a                               0.000016   firefox-bin
22:53:44.674  sendmsg           F=26   B=0x1                                0.000006   firefox-bin
22:53:44.674  recvfrom          F=41   B=0x4                                0.000171 W firefox-bin
22:53:44.674  close             F=41                                        0.000009   firefox-bin
22:53:44.675  socketpair                                                    0.000008   firefox-bin
22:53:44.675  sendto            F=26   B=0x3a                               0.000004   firefox-bin
22:53:44.675  sendmsg           F=26   B=0x1                                0.000005   firefox-bin
22:53:44.675  recvfrom          F=41   B=0x4                                0.000062 W firefox-bin
22:53:44.675  close             F=41                                        0.000006   firefox-bin
22:53:44.675  recvfrom          F=26   B=0x1c                               0.000011 W firefox-bin
22:53:44.675  recvfrom          F=26   B=0x38                               0.000003   firefox-bin
22:53:44.675  select                   S=0                                  0.000005   firefox-bin
22:53:44.675  recvfrom          F=26   B=0x1c                               0.000010 W firefox-bin
22:53:44.675  recvfrom          F=26   B=0x38                               0.000003   firefox-bin
22:53:44.675  select                   S=0                                  0.000003   firefox-bin
22:53:44.675  recvfrom          F=26   B=0x1c                               0.000010 W firefox-bin
22:53:44.675  recvfrom          F=26   B=0x38                               0.000003   firefox-bin
22:53:44.675  select                   S=0                                  0.000003   firefox-bin
22:53:44.675  recvfrom          F=26   B=0x1c                               0.000011 W firefox-bin
22:53:44.675  recvfrom          F=26   B=0x38                               0.000003   firefox-bin
22:53:44.675  select                   S=0                                  0.000003   firefox-bin
22:53:44.681  select                   S=1                                  0.000007   firefox-bin
22:53:44.681  select                   S=0                                  0.000005   firefox-bin
22:53:44.681  select                   S=0                                  0.000004   firefox-bin
22:53:44.681  select                   S=0                                  0.000004   firefox-bin
22:53:45.052  recvfrom          F=26   B=0x1c                               0.000007   firefox-bin
22:53:45.052  recvfrom          F=26   B=0x2c                               0.000003   firefox-bin
22:53:45.052  select                   S=1                                  0.000006   firefox-bin
22:53:45.053  recvfrom          F=26   B=0x1c                               0.000004   firefox-bin
22:53:45.053  recvfrom          F=26   B=0x2c                               0.000003   firefox-bin
22:53:45.053  select                   S=1                                  0.000003   firefox-bin
22:53:45.053  recvfrom          F=26   B=0x1c                               0.000003   firefox-bin
22:53:45.053  recvfrom          F=26   B=0x2c                               0.000003   firefox-bin
22:53:45.053  select                   S=1                                  0.000003   firefox-bin
22:53:45.053  recvfrom          F=26   B=0x1c                               0.000003   firefox-bin
22:53:45.053  recvfrom          F=26   B=0x2c                               0.000003   firefox-bin
22:53:45.053  select                   S=1                                  0.000003   firefox-bin
22:53:45.053  recvfrom          F=26   B=0x1c                               0.000003   firefox-bin
22:53:45.053  recvfrom          F=26   B=0x2c                               0.000003   firefox-bin
22:53:45.053  select                   S=1                                  0.000003   firefox-bin
22:53:45.053  recvfrom          F=26   B=0x1c                               0.000003   firefox-bin
22:53:45.053  recvfrom          F=26   B=0x2c                               0.000003   firefox-bin
22:53:45.053  select                   S=0                                  0.000004   firefox-bin
22:53:45.162  recvfrom          F=26   B=0x1c                               0.000008   firefox-bin
22:53:45.162  recvfrom          F=26   B=0x28                               0.000005   firefox-bin
22:53:45.162  select                   S=0                                  0.000007   firefox-bin
22:53:45.162  sendto            F=26   B=0x1c                               0.000008   firefox-bin
22:53:45.162  sendto            F=26   B=0x1c                               0.000005   firefox-bin
22:53:45.162  select                   S=1                                  0.480992 W firefox-bin
22:53:45.162  socket            F=38       <AF_INET, SOCK_STREAM, 0x0>      0.000014   firefox-bin
22:53:45.162  connect           F=38 [ 36]                                  0.000050   firefox-bin
22:53:45.162  select                   S=0                                  0.000007   firefox-bin
22:53:45.162  select                   S=0                                  0.000005   firefox-bin
22:53:45.572  select                   S=1                                  0.409320 W firefox-bin
22:53:45.572  select                   S=1                                  0.000007   firefox-bin
22:53:45.572  sendto            F=38   B=0x383                              0.000019   firefox-bin
22:53:45.614  select                   S=1                                  0.041730 W firefox-bin
22:53:45.614  recvfrom          F=39 [ 35]                                  0.000005   firefox-bin
22:53:45.614  select                   S=1                                  0.000008   firefox-bin
22:53:45.614  select                   S=0                                  0.000006   firefox-bin
22:53:45.614  sendto            F=39   B=0x6cc                              0.000040   firefox-bin
22:53:45.615  select                   S=1                                  0.000944 W firefox-bin
22:53:46.672  select                   S=1                                  1.057152 W firefox-bin
22:53:46.672  recvfrom          F=38   B=0x58a                              0.000017   firefox-bin
22:53:46.672  recvfrom          F=38 [ 35]                                  0.000003   firefox-bin
22:53:46.681  select                   S=1                                  0.009508 W firefox-bin
22:53:46.682  recvfrom          F=38   B=0x58a                              0.000018   firefox-bin
22:53:46.682  recvfrom          F=38 [ 35]                                  0.000002   firefox-bin
22:53:46.701  select                   S=1                                  0.019890 W firefox-bin
22:53:46.701  recvfrom          F=38   B=0x5cc                              0.000011   firefox-bin
22:53:46.701  recvfrom          F=38 [ 35]                                  0.000002   firefox-bin
22:53:46.782  select                   S=1                                  0.080308 W firefox-bin
22:53:46.782  recvfrom          F=38   B=0x58a                              0.000016   firefox-bin
22:53:46.782  recvfrom          F=38 [ 35]                                  0.000002   firefox-bin
22:53:46.801  select                   S=1                                  0.018850 W firefox-bin
22:53:46.801  recvfrom          F=38   B=0x3cc                              0.000013   firefox-bin
22:53:46.802  recvfrom          F=38 [ 35]                                  0.000011   firefox-bin
22:53:46.802  select                   S=1                                  0.000012   firefox-bin
22:53:46.802  select                   S=0                                  0.000005   firefox-bin
22:53:46.920  select                   S=1                                  0.118017 W firefox-bin
22:53:46.920  recvfrom          F=39   B=0x5                                0.000008   firefox-bin
22:53:46.920  recvfrom          F=39   B=0x169                              0.000004   firefox-bin
22:53:46.920  select                   S=1                                  0.000009   firefox-bin
22:53:46.920  select                   S=0                                  0.000004   firefox-bin
22:53:46.920  select                   S=1                                  0.000025 W firefox-bin
22:53:46.920  recvfrom          F=39 [ 35]                                  0.000003   firefox-bin
22:53:46.920  select                   S=1                                  0.000017 W firefox-bin
22:53:46.920  select                   S=1                                  0.000217 W firefox-bin
22:53:46.921  recvfrom          F=39   B=0x5                                0.000004   firefox-bin
22:53:46.921  recvfrom          F=39   B=0x44                               0.000003   firefox-bin
22:53:46.921  select                   S=1                                  0.000093 W firefox-bin
22:53:46.921  recvfrom          F=39 [ 35]                                  0.000002   firefox-bin
22:53:46.921  select                   S=1                                  0.000005   firefox-bin
22:53:46.921  select                   S=0                                  0.000004   firefox-bin
22:53:50.294  select                   S=1                                  3.373028 W firefox-bin
22:53:50.294  recvfrom          F=39 [ 35]                                  0.000008   firefox-bin
22:53:50.294  recvfrom          F=44 [ 35]                                  0.000003   firefox-bin
22:53:50.294  recvfrom          F=43 [ 35]                                  0.000003   firefox-bin
22:53:50.294  recvfrom          F=38 [ 35]                                  0.000003   firefox-bin
22:53:50.294  select                   S=0                                  0.000011   firefox-bin
22:53:50.294  select                   S=0                                  0.000006   firefox-bin