パソコン鳥のブログ

アクセスカウンタ

zoom RSS Linuxでプロセスがどのファイルにアクセスしているか調べる

<<   作成日時 : 2017/11/23 20:58   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

次のように strace を実行します。
PID は、調査したいプロセスIDを指定してください。

strace -p PID 2>&1 | grep -e ^open

例えば次のように実行します。

strace -p 448 2>&1 | grep -e ^open



プロセスがファイルをオープンすると、次のように open で始まる表示が出力されます。
ファイルのパスも表示されています。


open("/var/cache/samba/browse.dat.", O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0644) = 26
open("/var/cache/samba/browse.dat.", O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0644) = 26



プロセスがファイルを既にオープンしている場合は、straceを実行しても、open のログは現れません。
そこでプロセスの書き込みや読み込み動作を元に調べます。

書き込みを元にする場合は、次のように strace を実行します。
-p 448 の部分は、各自調べたいプロセスIDに置き換えて下さい。


strace -p 448 2>&1 | grep -e ^write


すると、プロセスでのファイル書き込みの際は、write で始まるログが出力されます。

write(26, "\"WORKGROUP\" c00010"..., 385) = 385
write(26, "\"WORKGROUP\" c00010"..., 385) = 385


読み込みを元にする場合は、次のように strace を実行します。
-p 7540 の部分は、各自調べたいプロセスIDに置き換えて下さい。
また、末尾に \( を付けるのを忘れないようにしてください。


strace -p 7540 2>&1 | grep -e ^read\(


すると、プロセスでのファイル読み込みの際は、read で始まるログが出力されます。

read(3, "\31\365S\325", 4) = 4
read(3, "\344\5\241\316", 4) = 4
read(3, "\"m\337\263", 4) = 4
read(3, "\350\211\207[", 4) = 4


しかし、プロセスの読み書きはわかりましたが、このままでは、どのファイルかが不明です。

そこで、read や write の後の数字(ファイルディスクリプタと呼ばれます)を元にファイルを探します。

次の書式でコマンドを実行します。
PID は、調査したいプロセスIDを指定してください。

ls -l /proc/PID/fd/

例えば次のように実行します。

ls -l /proc/448/fd/


すると、ファイルディスクリプタに対するファイル名が表示されます。
下記例では、ファイルディスクリプタ 14 は、/run/samba/serverid.tdb です。


dr-x------ 2 root root 0 9月 16 07:02 .
dr-xr-xr-x 8 root root 0 9月 15 21:20 ..
lrwx------ 1 root root 64 9月 16 07:02 0 -> /dev/null
lrwx------ 1 root root 64 9月 16 07:02 1 -> /dev/null
l-wx------ 1 root root 64 9月 16 07:02 10 -> /run/samba/nmbd.pid
lr-x------ 1 root root 64 9月 16 07:02 11 -> pipe:[12644]
l-wx------ 1 root root 64 9月 16 07:02 12 -> pipe:[12644]
lrwx------ 1 root root 64 9月 16 07:02 13 -> anon_inode:[eventfd]
lrwx------ 1 root root 64 9月 16 07:02 14 -> /run/samba/serverid.tdb
lrwx------ 1 root root 64 9月 16 07:02 15 -> socket:[12646]



これでプロセスがアクセスしているファイルがわかります。


参考


プロセスのシステムコールをトレースする strace パソコン鳥のブログ/ウェブリブログ
プロセスの環境変数、オープン中のファイル、カレントディレクトリを確認する パソコン鳥のブログ/ウェブリブログ

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
Linuxでプロセスがどのファイルにアクセスしているか調べる パソコン鳥のブログ/BIGLOBEウェブリブログ
文字サイズ:       閉じる