「lsof」の版間の差分
提供: セキュリティ
行6: | 行6: | ||
== 概要 == | == 概要 == | ||
− | + | [[lsof]]は、環境によっては、なかなか実行が終らない、重たいコマンドになってしまうことがあります。通信相手の多い環境で、[[IPアドレス]]からホスト名を[[逆引き]]したり、開いているファイル数が多い、実行中のプロセスが多い、などの理由で、[[lsof]]コマンドの実行時間が長くなり、出力が大きくなる可能性がありますので、場合によっては、利用に注意する必要があります。 | |
− | [[ | + | |
− | + | ||
== インストール == | == インストール == | ||
{{apt|lsof}} | {{apt|lsof}} | ||
− | {{ | + | {{pkg|lsof}} |
− | + | ||
== 使い方 == | == 使い方 == | ||
=== プロセスが開いているファイル === | === プロセスが開いているファイル === | ||
行60: | 行57: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | pgrepを併用する例です。 | |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
ubuntu@c1:~$ lsof -p `pgrep -n man` | ubuntu@c1:~$ lsof -p `pgrep -n man` | ||
行78: | 行75: | ||
man 11863 ubuntu 2u CHR 136,2 0t0 5 /dev/pts/2 | man 11863 ubuntu 2u CHR 136,2 0t0 5 /dev/pts/2 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
=== ユーザーが開いているファイル === | === ユーザーが開いているファイル === | ||
− | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
sudo lsof -u ユーザー名 | sudo lsof -u ユーザー名 | ||
行110: | 行105: | ||
rsyslogd 156 syslog 4w REG 8,1 56757 1189964 /var/log/auth.log | rsyslogd 156 syslog 4w REG 8,1 56757 1189964 /var/log/auth.log | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
=== コマンドの開いているファイルを調べる === | === コマンドの開いているファイルを調べる === | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
行141: | 行135: | ||
rsyslogd 156 syslog 4w REG 8,1 57575 1189964 /var/log/auth.log | rsyslogd 156 syslog 4w REG 8,1 57575 1189964 /var/log/auth.log | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
=== listenしているポート === | === listenしているポート === | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
行178: | 行171: | ||
sudo lsof -i @10.0.3.2:80 | sudo lsof -i @10.0.3.2:80 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
=== ファイルシステムごとに調べる === | === ファイルシステムごとに調べる === | ||
マウントしているパスを指定して調べることもできます。 | マウントしているパスを指定して調べることもできます。 | ||
行205: | 行197: | ||
upstart-u 386 root 1u CHR 1,3 0t0 4958 /dev/null | upstart-u 386 root 1u CHR 1,3 0t0 4958 /dev/null | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
=== 複数の条件で調べる方法 === | === 複数の条件で調べる方法 === | ||
プロセスとユーザー名で調べる例です。 | プロセスとユーザー名で調べる例です。 | ||
行211: | 行202: | ||
lsof -a -u ubuntu -c sshd | lsof -a -u ubuntu -c sshd | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
=== 名前を逆引きしない === | === 名前を逆引きしない === | ||
[[lsof]]は、[[IPアドレス]]から[[逆引き]]をします。大量にアドレスを調べる場合、[[lsof]]の遅く・重くなります。[[netstat]]のように、逆引きをやめることができます。 | [[lsof]]は、[[IPアドレス]]から[[逆引き]]をします。大量にアドレスを調べる場合、[[lsof]]の遅く・重くなります。[[netstat]]のように、逆引きをやめることができます。 | ||
行217: | 行207: | ||
lsof -n | lsof -n | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
== 関連項目 == | == 関連項目 == | ||
− | * | + | * top |
* [[htop]] | * [[htop]] | ||
* [[rkhunter]] | * [[rkhunter]] | ||
行225: | 行214: | ||
* [[システムモニタリングツール]] | * [[システムモニタリングツール]] | ||
* [[監視]] | * [[監視]] | ||
− | <!-- vim: filetype=mediawiki --> | + | <!-- vim: filetype=mediawiki |
+ | --> |
2015年9月22日 (火) 20:38時点における最新版
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