開いているファイルのプロセスを特定(lsofコマンド)

  • 293
    いいね
  • 2
    コメント
この記事は最終更新日から1年以上が経過しています。

lsofコマンドの使い方です。

lsofコマンドは、、、
PortやPID、プロセス名からファイルがオープンしている情報を表示するコマンド。

よく利用する場面

「netstat -an |grep LISTEN 」とかでListenしているPortを調べてそのPortが何のプロセスとかで動いているのかとかを確認するのに使っています!

使い方サンプル

ファイルを指定
% lsof /var/log/system.log
COMMAND   PID      USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
tail    97529 USERNAME    3r   REG    1,2   498299 12085861 /private/var/log/system.log

/var/log/system.logはtailコマンドで開いていることがわかりますねー


ポート指定
% lsof  -i:80,443
COMMAND PID      USER   FD   TYPE            DEVICE SIZE/OFF NODE NAME
Dropbox 376 USERNAME   14u  IPv4 0x2b3f22aae05f3e3      0t0  TCP 192.168.100.102:58140->108.160.162.100:http (ESTABLISHED)
Dropbox 376 USERNAME   19u  IPv4 0x2b3f22ab4456703      0t0  TCP 192.168.100.102:54071->108.160.160.177:https (CLOSED)

portが80, 443で開いているプロセスを表示指定ます。
LISTENしているプロセスも表示されます。(DROPBOX って HTTPポート(80) を使って同期しているんですねー)

明示的にLISTENされているプロセスを調べたい場合

redisのポート
lsof -i:6379 |grep LISTEN

# TCPとして指定する
lsof -iTCP:6379 |grep LISTEN

プロセス名指定
% lsof -c ruby
COMMAND   PID      USER   FD    TYPE             DEVICE  SIZE/OFF     NODE NAME
ruby    18910 USERNAME  cwd     DIR                1,2      1190        2 /
ruby    18910 USERNAME  txt     REG                1,2   2805460  1903306 /Users/USERNAME/.rbenv/versions/1.9.3-p385/bin/ruby
ruby    18910 USERNAME  txt     REG                1,2     13384  1903333 /Users/USERNAME/.rbenv/versions/1.9.3-p385/lib/ruby/1.9.1/x86_64-darwin12.2.1/enc/encdb.bundle
ruby    18910 USERNAME  txt     REG                1,2     13168  1903375 /Users/USERNAME/.rbenv/versions/1.9.3-p385/lib/ruby/1.9.1/x86_64-darwin

rubyプロセスが開いているファイルを表示していますねー


PIDを指定
% lsof  -p 376
COMMAND PID      USER   FD     TYPE             DEVICE  SIZE/OFF     NODE NAME
Dropbox 376 USERNAME  cwd      DIR                1,2      2550  7815603 /Applications/Dropbox.app/Contents/Resources
Dropbox 376 USERNAME  txt      REG                1,2     89808  7815600 /Applications/Dropbox.app/Contents/MacOS/Dropbox

PIDが376のプロセスが開いているファイルを表示


ユーザ名を指定
% lsof  -u ユーザ名

指定したユーザが開いているプロセスを表示