このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Linux】オープンしているファイルを一覧表示する:lsofコマンド

lsofコマンドの概要
lsof
(List Open Files)コマンドは、システム上でオープンされているすべてのファイルと、それらに関連するプロセスを一覧表示するためのコマンドです。ファイルには通常のファイル、ディレクトリ、ソケット、ネットワーク接続などが含まれます。lsof
コマンドは、特定のプロセスが使用しているファイルを特定したり、特定のファイルを使用しているプロセスを特定したりするのに役立ちます。
【構文】lsof [オプション] [パス名]

主なオプションと説明
オプション | 説明 |
---|---|
-n | ホスト名の解決を行わずに、IPアドレスそのままで表示します。 |
-p | 指定したプロセスIDに関連するファイルを表示します。 |
-u | 指定したユーザーがオープンしているファイルを表示します。 |
コマンドの使用例と解説
1.rootユーザーに切り替えます。
・「su -
」コマンドを実行します。
システムの管理権限が必要な操作を行うために、rootユーザーに切り替えます。
user01@ubuntu-vm:~$ su -
パスワード:
root@ubuntu-vm:~#
2.全プロセスを表示する。
・「lsof
」コマンドを実行します。
オプションを指定しないでコマンドを実行すると、システム上でオープンされているすべてのファイルとプロセスを表示します。どのプロセスがどのファイルを使用しているかを確認するのに便利です。
root@ubuntu-vm:~# lsof
(省略)
8,2 147800 926339 /var/cache/fontconfig/99864424-7aea-4e8f-919a-d4b55442e89a-le64.cache-7
gjs 3032 user01 mem REG 8,2 11504 917946 /var/cache/fontconfig/705899d0-19cd-40d1-90b3-617d458c590d-le64.cache-7
gjs 3032 user01 mem REG 8,2 23763 673933 /usr/share/locale-langpack/ja/LC_MESSAGES/gdk-pixbuf.mo
(省略)
3.ユーザーを指定する。
・「lsof -u user01
」コマンドを実行します。
user01
というユーザーがオープンしているすべてのファイルを表示します。特定のユーザーがどのファイルを使用しているかを確認できます。
root@ubuntu-vm:~# lsof -u user01
(省略)
gvfs-udis 2643 user01 mem REG 8,2 197136 526397 /usr/share/glib-2.0/schemas/gschemas.compiled
gvfs-udis 2643 user01 mem REG 8,2 6784496 401123 /usr/lib/locale/locale-archive
gvfs-udis 2643 user01 mem REG 8,2 63552 422925 /usr/lib/x86_64-linux-gnu/gio/modules/libdconfsettings.so
(省略)
4./mntディレクトリに対してlsofコマンドを実行する。
・「cd /mnt
」コマンドを実行します。
「/mnt
」ディレクトリに移動します。
root@ubuntu-vm:~# cd /mnt
・「lsof /mnt
」コマンドを実行します。
/mnt
ディレクトリおよびそのサブディレクトリにあるオープンファイルと、それらを使用しているプロセスを表示します。特定のディレクトリがどのプロセスによって使用されているかを調べる際に有用です。
root@ubuntu-vm:/mnt# lsof /mnt
lsof: WARNING: can't stat() fuse.portal file system /run/user/1000/doc
Output information may be incomplete.
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 4422 root cwd DIR 8,17 6 128 /mnt
lsof 4452 root cwd DIR 8,17 6 128 /mnt
lsof 4453 root cwd DIR 8,17 6 128 /mnt
まとめ
lsof
コマンドは、システム上のオープンファイルとそれに関連するプロセスを詳細に確認するための強力なツールです。ファイルのロック状況を確認したり、特定のプロセスが使用しているファイルを特定したりするのに役立ちます。これにより、ファイルシステムのトラブルシューティングやセキュリティチェックを行うことができます。