たまーに、指定したファイルを使用しているプロセスを調べたいということがある。 そういうとき、大体は lsof や fuser で対象のプロセスを調べるのだけど、そういったツールが入ってない+インストールができない、めんどくさいといった場合、どうやって調べればいいのだろう。

Linux(というか、UNIX系OS共通だと思う)の場合、/proc配下にあるプロセスIDのフォルダの中にある各種ファイルやフォルダに使用しているファイルへのシンボリックリンクが貼られている(fdだったらstdoutやstderrといったファイルディスクリプタに。例として、「cmd > /path/to/xxx」...


ファイルやポート、プロセスの関連を確認する際に良く利用するlsofコマンドについて、個人的に覚えておきたいオプションや使い方をまとめてみる事にする。
なお、もしlsofコマンドがない環境の場合、ファイルとプロセスの紐付けを確認するだけであればfuserコマンドが入っていればそれで代用可能だ。

1.全プロセスを確認する

lsofコマンドは、オプションを付与しないで実行すると全てのプロセスについて出力してくれる。

lsof
[root@test-node ~]# lsof
COMMAND     PID   TID     USER   FD      TYPE...

Linuxで容量ギリギリでディスクを使用していると、時折以下のようにディスクの空き容量がまだあるはずなのに0として扱われてしまう事がある。

[root@recserver ~]# df -h
Filesystem            Size  Used Avail Use% マウント位置
/dev/mapper/vg_recserver-lv_root
                       50G  3.5G   44G   8% /
tmpfs                 3.7G     0  3.7G   0% /dev/shm
/dev/sdb1...