Openされているファイルの一覧を表示する
Unixなプロセスで、現在、開いているファイルを一覧できる、lsofコマンドの紹介です。
Gentoo Linuxは案の定入っていないので導入
$sudo emerge lsof -q
使い方
- とりあえず、ファイルの一覧をする
$lsof
一番左が開いているプロセスで、一番右が対象のファイルです。
-
- 例
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME init 1 root cwd unknown /proc/1/cwd (readlink: Permission denied) init 1 root rtd unknown /proc/1/root (readlink: Permission denied) init 1 root txt unknown /proc/1/exe (readlink: Permission denied) init 1 root NOFD /proc/1/fd (opendir: Permission denied) kthreadd 2 root cwd unknown /proc/2/cwd (readlink: Permission denied) kthreadd 2 root rtd unknown /proc/2/root (readlink: Permission denied) kthreadd 2 root txt unknown /proc/2/exe (readlink: Permission denied)
- ある特定のライブラリにダイナミックリンクしているプロセスの一覧
$lsof | grep [ライブラリ名]
-
- 例
$ lsof | grep tcmalloc | head startkde 19819 ktomoya mem REG 8,33 135008 93499 /usr/lib64/libtcmalloc_minimal.so.0.0.0 ibus-daem 19823 ktomoya mem REG 8,33 135008 93499 /usr/lib64/libtcmalloc_minimal.so.0.0.0 ibus-gcon 19826 ktomoya mem REG 8,33 135008 93499 /usr/lib64/libtcmalloc_minimal.so.0.0.0 python2.6 19828 ktomoya mem REG 8,33 135008 93499 /usr/lib64/libtcmalloc_minimal.so.0.0.0 ibus-x11 19831 ktomoya mem REG 8,33 135008 93499 /usr/lib64/libtcmalloc_minimal.so.0.0.0 dbus-laun 19839 ktomoya mem REG 8,33 135008 93499 /usr/lib64/libtcmalloc_minimal.so.0.0.0 dbus-laun 19842 ktomoya mem REG 8,33 135008 93499 /usr/lib64/libtcmalloc_minimal.so.0.0.0
ファイル名の一覧だけを表示する
実際にファイルシステムとして、アクセスできるものに限定しています。
lsof | awk '{print $NF}' | sed -e "/^[^\/].*/d" | sort | uniq