標籤:lsof
lsof這個命令大家可能有點陌生,因為平時很少用到。今天特意拿出來說一下,希望對做營運的朋友有點點協助,也當是自己回憶一下知識點。
先來說說lsof最基本的參數:
lsof -i:(連接埠) 查看這個連接埠有那些進程在訪問,比如22連接埠
[[email protected] fd]# lsof -i:22
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 567 root 3r IPv4 8956289 0t0 TCP bogon:ssh->bogon:51479 (ESTABLISHED)
sshd 1875 root 3u IPv4 11442 0t0 TCP *:ssh (LISTEN)
sshd 1875 root 4u IPv6 11444 0t0 TCP *:ssh (LISTEN)
sshd 32661 root 3r IPv4 8949387 0t0 TCP bogon:ssh->bogon:50966 (ESTABLISHED)
從上面我們不難看出有兩個會話於22連接埠,當你懷疑某個連接埠被駭客利用時,第一個辦法就是用這個命令查一下有哪
些IP在訪問此連接埠。
利用lsof可以恢複一些系統日誌,前提是這個進程必須存在。這裡就拿最常用的/var/log/messages來舉例說明,大家
在做測試的時候最好先備份一下。
[[email protected]_backup ~]# lsof |grep /var/log/messages
syslogd 3477 root 2w REG 8,6 418 2097231 /var/log/messages
進程在運行中,接下來我就把/var/log/messages這個檔案刪掉
[[email protected]_backup ~]# rm -rf /var/log/messages
刪掉之後,我再來看看這個進程的變化
[[email protected]_backup ~]# lsof |grep /var/log/messages
rsyslogd 1520 root 1w REG 8,6 5344 786679 /var/log/messages (deleted)
大家看到有變化了吧, 對比兩個之後發現多了(deleted)。要找到這個檔案在哪還要看看這個
COMMAND:進程的名稱
PID:進程標識符
USER:進程所有者
FD:檔案描述符,應用程式通過檔案描述符識別該檔案。如cwd、txt等
TYPE:檔案類型,如DIR、REG等
DEVICE:指定磁碟的名稱
SIZE:檔案的大小
NODE:索引節點(檔案在磁碟上的標識)
NAME:開啟檔案的確切名稱
PID:1520 FD:1 那我們有直接進入/proc/1520/FD/1用ls查看一下
lrwx------ 1 root root 64 01-16 08:32 0 -> socket:[6561]
l-wx------ 1 root root 64 01-16 08:32 2 -> /var/log/messages (deleted)
l-wx------ 1 root root 64 01-16 08:32 3 -> /var/log/secure
l-wx------ 1 root root 64 01-16 08:32 4 -> /var/log/maillog
l-wx------ 1 root root 64 01-16 08:32 5 -> /var/log/cron
l-wx------ 1 root root 64 01-16 08:32 6 -> /var/log/spooler
l-wx------ 1 root root 64 01-16 08:32 7 -> /var/log/boot.log
看到了2對應/var/log/messages (deleted)好,我看看檔案是不是我們要的檔案
[[email protected]_backup ~]# head -n 10 2
Jan 14 08:26:36 new90 avahi-daemon[1690]: Invalid query packet.
Jan 14 08:26:36 new90 avahi-daemon[1690]: Invalid query packet.
Jan 14 08:26:36 new90 avahi-daemon[1690]: Invalid query packet.
Jan 14 08:26:37 new90 avahi-daemon[1690]: Invalid query packet.
Jan 14 08:26:37 new90 avahi-daemon[1690]: Invalid query packet.
Jan 14 08:26:40 new90 avahi-daemon[1690]: Invalid query packet.
Jan 14 08:26:49 new90 avahi-daemon[1690]: Invalid query packet.
Jan 14 08:27:16 new90 avahi-daemon[1690]: Invalid query packet.
Jan 14 11:05:43 new90 dnsmasq[2085]: no servers found in /etc/resolv.conf, will retry
我看到更我以前資料的一樣啊。可以恢複了
[[email protected]_backup ~]cat 2 > /var/log/messages
ok,我成功恢複了檔案。
本文出自 “實用筆記” 部落格,請務必保留此出處http://qiuyt.blog.51cto.com/1229789/1433838