Edited at

lsofコマンド入門

More than 1 year has passed since last update.


はじめに

サーバーで特定のポート番号を待ち受けているかどうか、指定ファイルは誰が読み込んでいるのかを調べたいときがあります。その際に役立つlsofコマンドについて調べてみました。


lsofコマンドとは

プロセスが開いているファイルを表示するコマンドです。


オプション

オプション
意味

-P
ポート番号をサービス名に変換しない

-c
プロセス名を指定する

-i
ネットワークソケットファイルを指定する

-n
IPアドレスを表示する(名前解決しない)

-p
プロセスIDを指定する

-u
ユーザー名を指定する


出力されている情報

項目
意味

COMMAND
実行されているコマンド

PID
プロセスID

USER
実行ユーザー

FD
ファイルディスクリプタ

TYPE
タイプ

DEVICE
デバイス

SIZE/OFF
ファイルサイズ

NODE
プロトコル

NAME
ファイル又はポート


NAME


  • (LISTEN): 待ち受け状態


利用方法


全プロセスを表示する

オプションを付与しないと全てのプロセスについて表示する

$ lsof


特定のポート番号で実行中のプロセスを調べる

$ lsof -i:80 -P 


特定のファイルを開いているプロセスを特定する

$ lsof /var/log/httpd/access_log


コマンドを指定する

$ lsof -c httpd


ユーザーを指定する

$ lsof -u nginx


ネットワークコネクションを出力する

$ lsof -i


ポート番号を指定する

$ lsof -i:80

複数ポート番号を指定できる

$ lsof -i:80,8080


まとめ

lsofコマンドは多機能なので全てを使いこなすのは難しそうですが、普段の運用で利用するのはほんの一握りの機能でも十分です。まずは基礎を覚えるだけでも、調査と原因究明が捗るようになるので、是非今後も利用していきたいです。


参考