Kodama's home / tips.
プロセスとファイルの関連をしらべる
Linux で プロセスとファイルの対応を調べる方法.
- プロセス番号と実行のファイルの関連(pstree -p, ps aux, top)
- プロセス番号 --> 実行ファイル(/proc/*/exe)
- 実行ファイル --> プロセス番号(fuser)
- プロセスと それが open/使用 しているファイルの対応
- プロセス --> オープンファイル(/proc/*/fd)
- ファイル --> プロセス(fuser -v)
- ポート --> プロセス(fuser -v)
- ファイルシステム --> プロセス(fuser -mv)
プロセス番号と実行ファイル
- 実行ファイルからプロセス番号をしらべる
fuser (実行ファイル)
- プロセス番号から実行ファイルをしらべる
ls -l /proc/(プロセス番号)/exe
- プロセス番号と実行中のファイルの関連をしらべる
pstree -p, ps aux , top または ls -lv /proc/[0-9]*/exe
例:
$ fuser /bin/sh
/bin/sh: 178e 225e 258e 259e 388e 394m 1768e 1797e 4158e 23900e 25678e
$ ls -l /proc/25678/exe
lrwxrwxrwx 1 kdm users 0 10月 9日 06:23 /proc/25678/exe -> /bin/bash
- fuser -v (ファイル|ディレクトリ)
プロセス番号にはファイルへのアクセス形式を表すマークがつく.
c(カレントディレクトリ), e(実行ファイル),
f(オープンファイル), r(ルートディレクトリ),m(mmap されたファイルか共有ライブラリ)
- fuser -v telnet/tcp
TELNET ポートにアクセスしているプロセス.
/etc/servicesを参照.
- fuser -mv (マウントポイント)
ファイルシステム上のファイルにアクセスしているすべてのプロセス.
umount でデバイスを使用中のときに確認に使える.
使用中のファイル/socket/pipe をしらべる.
ls -lv /proc/(プロセス番号)/fd |sed -n 's/^.* -> //p'
ls -lv /proc/(プロセス番号)/fd |sed -n 's:^.* -> /:/:p' (ファイルのみを表示する場合)
例:
$ ls -lv /proc/993/fd |sed -n 's/^.* -> //p'
/dev/null
/dev/tty1
/dev/tty1
pipe:[16359433]
pipe:[16359423]
pipe:[16359423]
pipe:[16359424]
pipe:[16359424]
pipe:[16359433]
/usr/local/lib/wazilla/component.reg
socket:[16359435]
/usr/local/lib/wazilla/chrome/lofi.jar
/usr/local/lib/wazilla/chrome/comm.jar
....略
注. socket の詳細は netstat で調べると良い.
Kodama's home / tips.