lsof
提供: セキュリティ
スポンサーリンク
lsof とは、オープンファイルをリストするためのコマンドです。
読み方
- lsof
- えるえすおぶ
目次
概要
lsofは、環境によっては、なかなか実行が終らない、重たいコマンドになってしまうことがあります。通信相手の多い環境で、IPアドレスからホスト名を逆引きしたり、開いているファイル数が多い、実行中のプロセスが多い、などの理由で、lsofコマンドの実行時間が長くなり、出力が大きくなる可能性がありますので、場合によっては、利用に注意する必要があります。
インストール
Ubuntu/Debianにインストールする場合
apt-get コマンドでインストールする場合です。
sudo apt-get install lsof
FreeBSDにインストールする場合
pkgコマンドでインストールする場合
sudo pkg install lsof
使い方
プロセスが開いているファイル
lsof -p プロセスID
ubuntu@c1:~$ lsof -p 709 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 709 root cwd unknown /proc/709/cwd (readlink: Permission denied) sshd 709 root rtd unknown /proc/709/root (readlink: Permission denied) sshd 709 root txt unknown /proc/709/exe (readlink: Permission denied) sshd 709 root NOFD /proc/709/fd (opendir: Permission denied) ubuntu@c1:~$ sudo lsof -p 709 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 709 root cwd DIR 8,1 4096 1187562 / sshd 709 root rtd DIR 8,1 4096 1187562 / sshd 709 root txt REG 8,1 527680 2622188 /usr/sbin/sshd sshd 709 root mem REG 8,1 47040 1712027 /lib/i386-linux-gnu/libnss_files-2.15.so sshd 709 root mem REG 8,1 42652 1712031 /lib/i386-linux-gnu/libnss_nis-2.15.so sshd 709 root mem REG 8,1 30520 1712023 /lib/i386-linux-gnu/libnss_compat-2.15.so sshd 709 root mem REG 8,1 83776 1712053 /lib/i386-linux-gnu/libresolv-2.15.so sshd 709 root mem REG 8,1 13672 1712005 /lib/i386-linux-gnu/libkeyutils.so.1.4 sshd 709 root mem REG 8,1 30320 2757679 /usr/lib/i386-linux-gnu/libkrb5support.so.0.1 sshd 709 root mem REG 8,1 157284 2757675 /usr/lib/i386-linux-gnu/libk5crypto.so.3.1 sshd 709 root mem REG 8,1 13940 1711991 /lib/i386-linux-gnu/libdl-2.15.so sshd 709 root mem REG 8,1 92016 1712021 /lib/i386-linux-gnu/libnsl-2.15.so sshd 709 root mem REG 8,1 1734120 1711979 /lib/i386-linux-gnu/libc-2.15.so sshd 709 root mem REG 8,1 13864 1711983 /lib/i386-linux-gnu/libcom_err.so.2.1 sshd 709 root mem REG 8,1 842684 2757677 /usr/lib/i386-linux-gnu/libkrb5.so.3.3 sshd 709 root mem REG 8,1 249660 2757671 /usr/lib/i386-linux-gnu/libgssapi_krb5.so.2.2 sshd 709 root mem REG 8,1 34316 1711985 /lib/i386-linux-gnu/libcrypt-2.15.so sshd 709 root mem REG 8,1 83572 1712190 /lib/i386-linux-gnu/libz.so.1.2.3.4 sshd 709 root mem REG 8,1 9796 1712073 /lib/i386-linux-gnu/libutil-2.15.so sshd 709 root mem REG 8,1 1734772 1711987 /lib/i386-linux-gnu/libcrypto.so.1.0.0 sshd 709 root mem REG 8,1 124663 1712049 /lib/i386-linux-gnu/libpthread-2.15.so sshd 709 root mem REG 8,1 120748 1712057 /lib/i386-linux-gnu/libselinux.so.1 sshd 709 root mem REG 8,1 50760 1712035 /lib/i386-linux-gnu/libpam.so.0.83.0 sshd 709 root mem REG 8,1 35032 1712188 /lib/i386-linux-gnu/libwrap.so.0.7.6 sshd 709 root mem REG 8,1 134344 1711961 /lib/i386-linux-gnu/ld-2.15.so sshd 709 root 0u CHR 1,3 0t0 1187639 /dev/null sshd 709 root 1u CHR 1,3 0t0 1187639 /dev/null sshd 709 root 2u CHR 1,3 0t0 1187639 /dev/null sshd 709 root 3r IPv4 19019 0t0 TCP *:ssh (LISTEN) sshd 709 root 4u IPv6 19026 0t0 TCP *:ssh (LISTEN)
pgrepを併用する例です。
ubuntu@c1:~$ lsof -p `pgrep -n man` COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME man 11863 ubuntu cwd DIR 8,1 4096 2759486 /usr/share/man man 11863 ubuntu rtd DIR 8,1 4096 1187562 / man 11863 ubuntu txt REG 8,1 100984 2107512 /usr/bin/man man 11863 ubuntu mem REG 8,1 83572 1712190 /lib/i386-linux-gnu/libz.so.1.2.3.4 man 11863 ubuntu mem REG 8,1 21912 2764465 /usr/lib/i386-linux-gnu/libgdbm.so.3.0.0 man 11863 ubuntu mem REG 8,1 1734120 1711979 /lib/i386-linux-gnu/libc-2.15.so man 11863 ubuntu mem REG 8,1 46304 2764470 /usr/lib/i386-linux-gnu/libpipeline.so.1.2.1 man 11863 ubuntu mem REG 8,1 113540 2364377 /usr/lib/man-db/libman-2.6.1.so man 11863 ubuntu mem REG 8,1 21720 2364378 /usr/lib/man-db/libmandb-2.6.1.so man 11863 ubuntu mem REG 8,1 134344 1711961 /lib/i386-linux-gnu/ld-2.15.so man 11863 ubuntu 0u CHR 136,2 0t0 5 /dev/pts/2 man 11863 ubuntu 1u CHR 136,2 0t0 5 /dev/pts/2 man 11863 ubuntu 2u CHR 136,2 0t0 5 /dev/pts/2
ユーザーが開いているファイル
sudo lsof -u ユーザー名
ubuntu@c1:~$ sudo lsof -u syslog COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME rsyslogd 156 syslog cwd DIR 8,1 4096 1187562 / rsyslogd 156 syslog rtd DIR 8,1 4096 1187562 / rsyslogd 156 syslog txt REG 8,1 388540 2622170 /usr/sbin/rsyslogd rsyslogd 156 syslog mem REG 8,1 42652 1712031 /lib/i386-linux-gnu/libnss_nis-2.15.so rsyslogd 156 syslog mem REG 8,1 92016 1712021 /lib/i386-linux-gnu/libnsl-2.15.so rsyslogd 156 syslog mem REG 8,1 30520 1712023 /lib/i386-linux-gnu/libnss_compat-2.15.so rsyslogd 156 syslog mem REG 8,1 22496 2760930 /usr/lib/rsyslog/imklog.so rsyslogd 156 syslog mem REG 8,1 331860 2760940 /usr/lib/rsyslog/imuxsock.so rsyslogd 156 syslog mem REG 8,1 47040 1712027 /lib/i386-linux-gnu/libnss_files-2.15.so rsyslogd 156 syslog mem REG 8,1 22304 2760942 /usr/lib/rsyslog/lmnet.so rsyslogd 156 syslog mem REG 8,1 1734120 1711979 /lib/i386-linux-gnu/libc-2.15.so rsyslogd 156 syslog mem REG 8,1 30684 1712055 /lib/i386-linux-gnu/librt-2.15.so rsyslogd 156 syslog mem REG 8,1 13940 1711991 /lib/i386-linux-gnu/libdl-2.15.so rsyslogd 156 syslog mem REG 8,1 124663 1712049 /lib/i386-linux-gnu/libpthread-2.15.so rsyslogd 156 syslog mem REG 8,1 83572 1712190 /lib/i386-linux-gnu/libz.so.1.2.3.4 rsyslogd 156 syslog mem REG 8,1 134344 1711961 /lib/i386-linux-gnu/ld-2.15.so rsyslogd 156 syslog 0u unix 0xef2c46c0 0t0 17046 /dev/log rsyslogd 156 syslog 1w REG 8,1 11210 1189965 /var/log/syslog rsyslogd 156 syslog 2w REG 8,1 981 1189966 /var/log/kern.log rsyslogd 156 syslog 3r REG 0,30 0 4026532032 /proc/kmsg rsyslogd 156 syslog 4w REG 8,1 56757 1189964 /var/log/auth.log
コマンドの開いているファイルを調べる
lsof -c コマンド
ubuntu@c1:~$ sudo lsof -c rsyslogd COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME rsyslogd 156 syslog cwd DIR 8,1 4096 1187562 / rsyslogd 156 syslog rtd DIR 8,1 4096 1187562 / rsyslogd 156 syslog txt REG 8,1 388540 2622170 /usr/sbin/rsyslogd rsyslogd 156 syslog mem REG 8,1 42652 1712031 /lib/i386-linux-gnu/libnss_nis-2.15.so rsyslogd 156 syslog mem REG 8,1 92016 1712021 /lib/i386-linux-gnu/libnsl-2.15.so rsyslogd 156 syslog mem REG 8,1 30520 1712023 /lib/i386-linux-gnu/libnss_compat-2.15.so rsyslogd 156 syslog mem REG 8,1 22496 2760930 /usr/lib/rsyslog/imklog.so rsyslogd 156 syslog mem REG 8,1 331860 2760940 /usr/lib/rsyslog/imuxsock.so rsyslogd 156 syslog mem REG 8,1 47040 1712027 /lib/i386-linux-gnu/libnss_files-2.15.so rsyslogd 156 syslog mem REG 8,1 22304 2760942 /usr/lib/rsyslog/lmnet.so rsyslogd 156 syslog mem REG 8,1 1734120 1711979 /lib/i386-linux-gnu/libc-2.15.so rsyslogd 156 syslog mem REG 8,1 30684 1712055 /lib/i386-linux-gnu/librt-2.15.so rsyslogd 156 syslog mem REG 8,1 13940 1711991 /lib/i386-linux-gnu/libdl-2.15.so rsyslogd 156 syslog mem REG 8,1 124663 1712049 /lib/i386-linux-gnu/libpthread-2.15.so rsyslogd 156 syslog mem REG 8,1 83572 1712190 /lib/i386-linux-gnu/libz.so.1.2.3.4 rsyslogd 156 syslog mem REG 8,1 134344 1711961 /lib/i386-linux-gnu/ld-2.15.so rsyslogd 156 syslog 0u unix 0xef2c46c0 0t0 17046 /dev/log rsyslogd 156 syslog 1w REG 8,1 11210 1189965 /var/log/syslog rsyslogd 156 syslog 2w REG 8,1 981 1189966 /var/log/kern.log rsyslogd 156 syslog 3r REG 0,30 0 4026532032 /proc/kmsg rsyslogd 156 syslog 4w REG 8,1 57575 1189964 /var/log/auth.log
listenしているポート
ubuntu@c1:~$ sudo lsof -i COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME dhclient3 671 root 7u IPv4 18870 0t0 UDP *:bootpc sshd 709 root 3r IPv4 19019 0t0 TCP *:ssh (LISTEN) sshd 709 root 4u IPv6 19026 0t0 TCP *:ssh (LISTEN) sshd 2019 root 3r IPv4 33986 0t0 TCP c1:ssh->10.0.3.1:59588 (ESTABLISHED) sshd 2031 ubuntu 3u IPv4 33986 0t0 TCP c1:ssh->10.0.3.1:59588 (ESTABLISHED) sshd 11284 root 3r IPv4 47432 0t0 TCP c1:ssh->10.0.3.1:59649 (ESTABLISHED) sshd 11296 ubuntu 3u IPv4 47432 0t0 TCP c1:ssh->10.0.3.1:59649 (ESTABLISHED)
ポート番号やプロトコル名で開いているポートを調べられます。
sudo lsof -i :ssh sudo lsof -i :22 sudo lsof -i :22,80
ubuntu@c1:~$ sudo lsof -i :ssh COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 709 root 3r IPv4 19019 0t0 TCP *:ssh (LISTEN) sshd 709 root 4u IPv6 19026 0t0 TCP *:ssh (LISTEN) sshd 2019 root 3r IPv4 33986 0t0 TCP c1:ssh->10.0.3.1:59588 (ESTABLISHED) sshd 2031 ubuntu 3u IPv4 33986 0t0 TCP c1:ssh->10.0.3.1:59588 (ESTABLISHED) sshd 11284 root 3r IPv4 47432 0t0 TCP c1:ssh->10.0.3.1:59649 (ESTABLISHED) sshd 11296 ubuntu 3u IPv4 47432 0t0 TCP c1:ssh->10.0.3.1:59649 (ESTABLISHED)
インターフェイスを指定する例です。
sudo lsof -i @10.0.3.2 sudo lsof -i @10.0.3.2:80
ファイルシステムごとに調べる
マウントしているパスを指定して調べることもできます。
lsof /mnt
ubuntu@c1:~$ lsof /proc COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME lsof 12519 ubuntu 3r DIR 0,30 0 1 /proc lsof 12519 ubuntu 6r DIR 0,30 0 59097 /proc/12519/fd foo@u1:~$ sudo lsof /dev |head lsof: WARNING: can't stat() fuse.gvfs-fuse-daemon file system /home/kaoru/.gvfs Output information may be incomplete. COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME init 1 root 0u CHR 1,3 0t0 4958 /dev/null init 1 root 1u CHR 1,3 0t0 4958 /dev/null init 1 root 2u CHR 1,3 0t0 4958 /dev/null init 1 root 18u CHR 5,2 0t0 5260 /dev/ptmx init 1 root 21u CHR 5,2 0t0 5260 /dev/ptmx kdevtmpfs 10 root cwd DIR 0,5 4220 3 / kdevtmpfs 10 root rtd DIR 0,5 4220 3 / upstart-u 386 root 0u CHR 1,3 0t0 4958 /dev/null upstart-u 386 root 1u CHR 1,3 0t0 4958 /dev/null
複数の条件で調べる方法
プロセスとユーザー名で調べる例です。
lsof -a -u ubuntu -c sshd
名前を逆引きしない
lsofは、IPアドレスから逆引きをします。大量にアドレスを調べる場合、lsofの遅く・重くなります。netstatのように、逆引きをやめることができます。
lsof -n
関連項目
ツイート
スポンサーリンク