ファイルシステムへのアクセスをモニタする
上手くアプリケーションが起動せず、ログファイルを見ても合致するようなログが無い場合などに直接、ファイルシステムへのアクセスをモニタすると問題の解決に役立つ場合があります。こういった場合は 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
|