2022年8月、ホームページを全面リニューアルしました! 情報を分かりやすくお伝えできるサイト作りを目指してまいります。

デーモンが使用中のファイルを調べる!

lsofの使い方は、この技術の部屋の ここ や ここ でも紹介したが、lsofは意外と便利な機能が有るので俺が便利な使い方を紹介する。例えば、デーモンが実行されてるんだけど依存関係の有るファイルがどういう物があり、どれだけ起動されているかなどを確かめるのにはlsofが便利である。それと、TCP/IPのソケットがどれだけ立ち上がってるかも確認できる。さらに、 top コマンドでシステムリソース等も確認してみよう。


1.現在動いている隠れたファイルを知る

1)syslogデーモンに関係する隠れたファイルを知る

以下のコマンドを使って調べる。不要なlogが動作中であることもチェックできるので便利だ。
あと、セキュリティ的には基本だが見覚えの無いプロセスが動いているとかの確認。

root@slack10:~# lsof -c syslogd
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
syslogd 1125 root cwd DIR 3,3 4096 2 /
syslogd 1125 root rtd DIR 3,3 4096 2 /
syslogd 1125 root txt REG 3,3 27448 1308298 /usr/sbin/syslogd
syslogd 1125 root mem REG 3,3 41351 1013933 /lib/tls/libnss_files-2.3.5.so
syslogd 1125 root mem REG 3,3 13120 1013927 /lib/tls/libdl-2.3.5.so
syslogd 1125 root mem REG 3,3 20356 164713 /lib/libsafe.so.2.0.16
syslogd 1125 root mem REG 0,0 0 [vdso] (stat: No such file or directory)
syslogd 1125 root mem REG 3,3 99790 917006 /lib/ld-2.3.5.so
syslogd 1125 root mem REG 3,3 1366940 1013924 /lib/tls/libc-2.3.5.so
syslogd 1125 root 0u unix 0xcf094c80 1918 /dev/log
syslogd 1125 root 2w REG 3,3 5795 196445 /var/log/messages
syslogd 1125 root 3w REG 3,3 0 196449 /var/log/syslog
syslogd 1125 root 4w REG 3,3 0 197195 /var/log/debug
syslogd 1125 root 5w REG 3,3 0 196448 /var/log/secure
syslogd 1125 root 6w REG 3,3 0 198489 /var/log/cron
syslogd 1125 root 7w REG 3,3 0 196450 /var/log/maillog
syslogd 1125 root 8w REG 3,3 0 196386 /var/log/spooler ← これは必要ないので止める

/var/log/spooler logは必要ないので止めることにする。以下は、/var/log/spoolerを止めた後のlsof結果。

root@slack10:~# lsof -c syslogd
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
syslogd 4047 root cwd DIR 3,3 4096 2 /
syslogd 4047 root rtd DIR 3,3 4096 2 /
syslogd 4047 root txt REG 3,3 27448 1308298 /usr/sbin/syslogd
syslogd 4047 root mem REG 3,3 99790 917006 /lib/ld-2.3.5.so
syslogd 4047 root mem REG 3,3 1366940 1013924 /lib/tls/libc-2.3.5.so
syslogd 4047 root mem REG 0,0 0 [vdso] (stat: No such file or directory)
syslogd 4047 root mem REG 3,3 13120 1013927 /lib/tls/libdl-2.3.5.so
syslogd 4047 root mem REG 3,3 20356 164713 /lib/libsafe.so.2.0.16
syslogd 4047 root mem REG 3,3 41351 1013933 /lib/tls/libnss_files-2.3.5.so
syslogd 4047 root 0u unix 0xcf094900 231509 /dev/log
syslogd 4047 root 1w REG 3,3 5966 196445 /var/log/messages
syslogd 4047 root 2w REG 3,3 0 196449 /var/log/syslog
syslogd 4047 root 3w REG 3,3 0 197195 /var/log/debug
syslogd 4047 root 4w REG 3,3 0 196448 /var/log/secure
syslogd 4047 root 5w REG 3,3 0 198489 /var/log/cron
syslogd 4047 root 6w REG 3,3 0 196450 /var/log/maillog

2)inetdスーパーデーモンから実行されているサービス及びファイルを知る
以下のコマンドを使って調べる。

root@slack10:~# lsof -c inetd
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
inetd 1511 root cwd DIR 3,3 4096 2 /
inetd 1511 root rtd DIR 3,3 4096 2 /
inetd 1511 root txt REG 3,3 22916 1309141 /usr/sbin/inetd
inetd 1511 root mem REG 3,3 99790 917006 /lib/ld-2.3.5.so
inetd 1511 root mem REG 3,3 41351 1013933 /lib/tls/libnss_files-2.3.5.so
inetd 1511 root mem REG 0,0 0 [vdso] (stat: No such file or directory)
inetd 1511 root mem REG 3,3 13120 1013927 /lib/tls/libdl-2.3.5.so
inetd 1511 root mem REG 3,3 20356 164713 /lib/libsafe.so.2.0.16
inetd 1511 root mem REG 3,3 1366940 1013924 /lib/tls/libc-2.3.5.so
inetd 1511 root 0u CHR 1,3 360262 /dev/null
inetd 1511 root 1u CHR 1,3 360262 /dev/null
inetd 1511 root 2u CHR 1,3 360262 /dev/null
inetd 1511 root 4u IPv4 223331 TCP *:ftp (LISTEN) ← vsftpdが動いてる

ちなみに、inetd.confの内容を見る。vsftpdを動かしてることが解る。

root@slack10:~# more /etc/inetd.conf
# Very Secure File Transfer Protocol (FTP) server.
ftp   stream   tcp   nowait   root   /usr/sbin/tcpd vsftpd

3)現在稼働中のlighttpdの依存関係を知る

以下のように、httpエンジン lighttpd のmod_xxxxとかのローダブルモジュールが動作中であるのも解る。

root@slack10:~# lsof -c lighttpd
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
lighttpd 25574 nobody cwd DIR 3,3 4096 2 /
lighttpd 25574 nobody rtd DIR 3,3 4096 2 /
lighttpd 25574 nobody txt REG 3,3 989243 132217 /usr/local/sbin/lighttpd
lighttpd 25574 nobody mem REG 3,3 48673 720063 /usr/local/lib/mod_rewrite.so
lighttpd 25574 nobody mem REG 3,3 60147 720027 /usr/local/lib/mod_staticfile.so
lighttpd 25574 nobody mem REG 3,3 41351 1013933 /lib/tls/libnss_files-2.3.5.so
lighttpd 25574 nobody mem REG 3,3 35866 1013931 /lib/tls/libnss_compat-2.3.5.so
lighttpd 25574 nobody mem REG 3,3 41583 1013935 /lib/tls/libnss_nis-2.3.5.so
lighttpd 25574 nobody mem REG 3,3 303572 719994 /usr/local/lib/libpcre.so.0.0.1
lighttpd 25574 nobody mem REG 3,3 44272 720033 /usr/local/lib/mod_setenv.so
lighttpd 25574 nobody mem REG 3,3 116884 720055 /usr/local/lib/mod_fastcgi.so
lighttpd 25574 nobody mem REG 3,3 92501 1013930 /lib/tls/libnsl-2.3.5.so
lighttpd 25574 nobody mem REG 3,3 25168 1013926 /lib/tls/libcrypt-2.3.5.so
lighttpd 25574 nobody mem REG 3,3 1366940 1013924 /lib/tls/libc-2.3.5.so
lighttpd 25574 nobody mem REG 3,3 42272 720057 /usr/local/lib/mod_access.so
lighttpd 25574 nobody mem REG 3,3 43782 720031 /usr/local/lib/mod_indexfile.so
lighttpd 25574 nobody mem REG 3,3 44935 720053 /usr/local/lib/mod_simple_vhost.so
lighttpd 25574 nobody mem REG 3,3 107093 720061 /usr/local/lib/mod_auth.so
lighttpd 25574 nobody mem REG 3,3 68946 720069 /usr/local/lib/mod_accesslog.so
lighttpd 25574 nobody mem REG 0,0 0 [vdso] (stat: No such file or directory)
lighttpd 25574 nobody mem REG 3,3 70900 720029 /usr/local/lib/mod_dirlisting.so
lighttpd 25574 nobody mem REG 3,3 13120 1013927 /lib/tls/libdl-2.3.5.so
lighttpd 25574 nobody mem REG 3,3 77251 720023 /usr/local/lib/mod_cgi.so
lighttpd 25574 nobody mem REG 3,3 99790 917006 /lib/ld-2.3.5.so
lighttpd 25574 nobody mem REG 3,3 118202 720045 /usr/local/lib/mod_ssi.so
lighttpd 25574 nobody mem REG 3,3 20356 164713 /lib/libsafe.so.2.0.16
lighttpd 25574 nobody 0r CHR 1,3 360262 /dev/null
lighttpd 25574 nobody 1w CHR 1,3 360262 /dev/null
lighttpd 25574 nobody 2w CHR 1,3 360262 /dev/null
lighttpd 25574 nobody 3w REG 3,3 6867 656380 /usr/local/apache/logs/access_log
lighttpd 25574 nobody 4u IPv4 199840 TCP *:http (LISTEN)
lighttpd 25574 nobody 6w REG 3,3 6889 656381 /usr/local/apache/logs/error_log


2.稼働中のソケットを知る

稼働中のソケットを知る。まずは、netstatコマンドを使う。

root@slack10:~# netstat -p
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 20 slack10.microtechno:ssh 192.168.0.25:65074 ESTABLISHED 4006/2

udp 0 0 localhost:32769 localhost:32769 ESTABLISHED 1381/postmaster

Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node PID/Program name Path
unix 2 [ ] DGRAM 869 749/udevd @udevd
unix 3 [ ] DGRAM 231509 4047/syslogd /dev/log
unix 2 [ ] DGRAM 231516 4050/klogd

次に、lsofを使ってみる。見て貰えば一目瞭然。lsofの方がわかりやすいし表示が親切。

root@slack10:~# lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
sshd 1207 root 3u IPv4 2123 TCP *:ssh (LISTEN)
postmaste 1381 postgres 3u IPv4 2712 TCP localhost:postgresql (LISTEN)
postmaste 1381 postgres 5u IPv4 2717 UDP localhost:32769->localhost:32769
postmaste 1384 postgres 5u IPv4 2717 UDP localhost:32769->localhost:32769
postmaste 1385 postgres 5u IPv4 2717 UDP localhost:32769->localhost:32769
inetd 1511 root 4u IPv4 223331 TCP *:ftp (LISTEN)
sshd 4006 root 3u IPv4 230997 TCP slack10.xxxxxxx.co.jp:ssh->192.168.0.25:65074 (ESTABLISHED)
lighttpd 25574 nobody 4u IPv4 199840 TCP *:http (LISTEN)
iperf 31285 root 3u IPv4 217071 TCP *:commplex-link (LISTEN)  ← iperfを動かしてる事も解る


3.稼働中のシステム資源を知る(topコマンドを使う)

topコマンドを使って稼働中のシステム資源を知る。画面全体に情報がリアルタイムに表示され2秒毎に更新される。
■ メモリの使用率
■ SWAPの使用率
■ CPUの使用率
■ システム資源の表示と個別リソース使用率

root@slack10:~# top
top – 11:29:46 up 17 days, 23:48, 3 users, load average: 0.00, 0.00, 0.00
Tasks: 44 total, 1 running, 43 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.3% us, 0.3% sy, 0.0% ni, 99.3% id, 0.0% wa, 0.0% hi, 0.0% si
Mem: 255624k total, 248928k used, 6696k free, 61012k buffers
Swap: 497972k total, 116k used, 497856k free, 102516k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4111 root 16 0 2112 1112 868 R 0.3 0.4 0:00.28 top
1 root 16 0 688 252 220 S 0.0 0.1 0:00.16 init
2 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
3 root 34 19 0 0 0 S 0.0 0.0 0:00.02 ksoftirqd/0
4 root 10 -5 0 0 0 S 0.0 0.0 0:00.03 events/0
5 root 10 -5 0 0 0 S 0.0 0.0 0:00.07 khelper
6 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 kthread
8 root 10 -5 0 0 0 S 0.0 0.0 0:00.08 kblockd/0
55 root 20 0 0 0 0 S 0.0 0.0 0:00.00 pdflush
56 root 15 0 0 0 0 S 0.0 0.0 0:01.91 pdflush
58 root 20 -5 0 0 0 S 0.0 0.0 0:00.00 aio/0
57 root 15 0 0 0 0 S 0.0 0.0 0:01.98 kswapd0
642 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 kseriod
676 root 11 -5 0 0 0 S 0.0 0.0 0:00.00 ata/0
680 root 11 -5 0 0 0 S 0.0 0.0 0:00.00 kpsmoused
682 root 15 0 0 0 0 S 0.0 0.0 0:03.76 kjournald
749 root 11 -4 1532 548 452 S 0.0 0.2 0:00.25 udevd
928 root 15 0 0 0 0 S 0.0 0.0 0:00.00 kjournald
1185 root 16 0 1716 628 512 S 0.0 0.2 0:00.00 crond
1207 root 16 0 3428 1048 776 S 0.0 0.4 0:08.44 sshd
1224 root 15 0 2824 1708 1232 S 0.0 0.7 0:00.19 bash
1236 root 16 0 1520 536 456 S 0.0 0.2 0:00.00 agetty
1237 root 16 0 1520 540 456 S 0.0 0.2 0:00.00 agetty

■ top実行中の主なコマンドの説明
u : 個別ユーザが掴んでるプロセスの表示
k : 指定されたプロセスIDのモジュールのシグナリング及び停止
S : 累積モードのトグルコマンド、CPU時間の合計を表示
i : アイドルプロセスの表示
? : ヘルプ表示
q : 終了

以上

コメント