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