Linuxコマンド辞典 lsofコマンド(プロセス管理)
開いているファイルを表示する「lsof」コマンドの概要と使い方を記載しています。
RHEL Fedora CentOS Vine Deblan Ubuntu Plamo
概要・使用方法
プロセスが開いているファイル/ディレクトリ/ブロックファイル/キャラクタファイル/ライブラリ/ストリームファイル/ソケットファイルを表示します。オプションを指定せずに実行すると、すべてのプロセスが開いているファイルをリストします。また、-iオプションでファイルやインターネットアドレスなどを指定することで、表示する情報を絞り込むことができます。一般ユーザーで実行した場合、「Permission denied(パーミッションエラー)」というエラーが表示されることがあるので、管理者権限で実行する必要があります。システムの不正利用の監視などに利用できます。
[46][protocol][@hostname][hostaddr][:service|port]
書式
$ lsof [オプション] [ファイル名]
ターゲットの指定は次のフォーマットになります。
ターゲット | 説明 |
---|---|
4 | IPv4 |
6 | IPv6 |
protocol | TCPもしくはUDP |
hostname | FQDN |
hostaddr | iPv4もしくはIPv6アドレス。IPv6では”[“と”]”で挟む |
service | /etc/servicesにあるサービス名 |
port | サービスポート番号 |
lsofコマンドで表示される情報
COMMAND | プロセスを起動したコマンドの名称 |
PID | プロセス番号 |
USER | 実行ユーザの名称 |
FD | ファイル記述子番号 |
TYPE | 該当ファイルと関連するノードタイプ |
DEVICE | デバイス番号 |
SIZE | ファイル容量 |
NODENAME | ローカルファイルのinode番号または開いているファイル |
オプション
-i ターゲット | ターゲットに「インターネットアドレス」を指定してファイルなどを表示する |
-c プロセス | 指定したプロセスが開いているファイルを表示する |
-d FD | FDとして指定したファイルディスクリプタを特定して表示する |
-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 ~]$