Linuxコマンド辞典 lsofコマンド(プロセス管理)

開いているファイルを表示する「lsof」コマンドの概要と使い方を記載しています。

RHEL Fedora CentOS Vine Deblan Ubuntu Plamo

概要・使用方法

プロセスが開いているファイル/ディレクトリ/ブロックファイル/キャラクタファイル/ライブラリ/ストリームファイル/ソケットファイルを表示します。オプションを指定せずに実行すると、すべてのプロセスが開いているファイルをリストします。また、-iオプションでファイルやインターネットアドレスなどを指定することで、表示する情報を絞り込むことができます。一般ユーザーで実行した場合、「Permission denied(パーミッションエラー)」というエラーが表示されることがあるので、管理者権限で実行する必要があります。システムの不正利用の監視などに利用できます。

[46][protocol][@hostname][hostaddr][:service|port]

書式

$ lsof [オプション] [ファイル名]

ターゲットの指定は次のフォーマットになります。

ターゲット説明
IPv4
IPv6
protocolTCPもしくはUDP
hostnameFQDN
hostaddriPv4もしくはIPv6アドレス。IPv6では”[“と”]”で挟む
service/etc/servicesにあるサービス名
portサービスポート番号

lsofコマンドで表示される情報

COMMANDプロセスを起動したコマンドの名称
PIDプロセス番号
USER実行ユーザの名称
FDファイル記述子番号
TYPE該当ファイルと関連するノードタイプ
DEVICEデバイス番号
SIZEファイル容量
NODENAMEローカルファイルのinode番号または開いているファイル

オプション

-i ターゲットターゲットに「インターネットアドレス」を指定してファイルなどを表示する
-c プロセス指定したプロセスが開いているファイルを表示する
-d FDFDとして指定したファイルディスクリプタを特定して表示する
-nホスト名の名前解決を行わない
-p プロセスID指定したプロセスIDで開いてるファイルを表示する
-u ユーザ名指定したユーザが開いているふぃあるを
-r[秒数]指定した秒ごとに結果を再描画する

ポート番号を指定してプロセスを表示する

$ lsof -i:3306

実行結果

# lsof -i:3306
COMMAND   PID   USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
mysqld   3465  mysql   19u  IPv6 145615078      0t0  TCP *:mysql (LISTEN)
mysqld   3465  mysql   25u  IPv6 165412478      0t0  TCP localhost:mysql->localhost:49458 (ESTABLISHED)
mysqld   3465  mysql   44u  IPv6 165869239      0t0  TCP localhost:mysql->localhost:39518 (ESTABLISHED)

特定のコマンドが開いているファイルを表示する

$ lsof -c コマンド名

実行結果

[suna@localhost ~]$ lsof -c vi
COMMAND    PID USER   FD   TYPE DEVICE  SIZE/OFF     NODE NAME
vim     830604 suna  cwd    DIR  253,2        43 33606214 /home/suna/test
vim     830604 suna  rtd    DIR  253,0       244      128 /
vim     830604 suna    5u   REG  253,2     12288 33606215 /home/suna/test/.test.txt.swp
[suna@localhost ~]$