常用命令lsof netstat 介紹
註釋:在linux下一切皆檔案,包括磁碟 tty 串列埠,包括硬體裝置,套介面;
既然linux下一切都是以檔案形式存在,那我們是不是可以通過訪問檔案來檢視資料以及網路連線以及tcp和udp等socket套接字;
系統在後臺會為每個應用程式分配一個檔案描述符,檔案描述符為應用程式和作業系統交換提供介面,應用程式在開啟檔案的描述符列表提供了一些應用程式的資訊;
lsof (list openfile) 列出開啟檔案;
註釋:losf 會訪問linux核心檔案以及記憶體,所以一般需要使用root使用者的許可權;
losf 選項
註釋:每行會顯示一個開啟的檔案,若直接輸入 losf ,不指定任何選項會顯示所有程序開啟的所有檔案;
常用的選項如下;
lsof /filename 檢視當前誰正在使用這個檔案; 如: lsof /root
lsof +D /root 可以遞迴檢視某個目錄下的目錄;
(1):lsof預設選項:如下顯示;
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
程序名稱 程序ID 執行緒ID 使用者 檔案描述符 型別 指定磁碟的名稱 檔案大小 索引階段 開啟檔案的名稱
[root@localhost_002 ~]# lsof |head -n10
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root cwd DIR 8,3 268 64 /
systemd 1 root rtd DIR 8,3 268 64 /
systemd 1 root txt REG 8,3 1523568 279801 /usr/lib/systemd/systemd
systemd 1 root mem REG 8,3 20040 60007 /usr/lib64/libuuid.so.1.3.0
systemd 1 root mem REG 8,3 261336 190815 /usr/lib64/libblkid.so.1.1.0
systemd 1 root mem REG 8,3 90664 59990 /usr/lib64/libz.so.1.2.7
systemd 1 root mem REG 8,3 157424 59996 /usr/lib64/liblzma.so.5.2.2
systemd 1 root mem REG 8,3 23968 60084 /usr/lib64/libcap-ng.so.0.0.0
lsof 1704 root 2u CHR 136,0 0t0 3 /dev/pts/0
pickup 1696 postfix 7u unix 0xffff88003a44dc00 0t0 31732 socket
pickup 1696 postfix 92w FIFO 0,8 0t0 18922 pipe
註釋: FD:檔案描述符;
cwd(應用程式在那個目錄啟動的)
txt(txt型別是程式程式碼,應用程式本身或者共享庫 如/sbin/init)
2u:表示檔案描述符是2, 該檔案處於讀取/寫入模式
w:表示只寫模式;
W:表示該程式對真個應用程式可寫;
type:型別;DIR(目錄) REG(檔案) CHR(字元) BLK(塊裝置) unix(域套接字) FIFO(先進先出)
(2): lsof /root 檢視當前誰正在使用/root這個檔案;
[root@localhost_002 ~]# lsof /root
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 1198 root cwd DIR 8,3 4096 33574977 /root
bash 1242 root cwd DIR 8,3 4096 33574977 /root
bash 1624 root cwd DIR 8,3 4096 33574977 /root
vim 1725 root cwd DIR 8,3 4096 33574977 /root
lsof 1744 root cwd DIR 8,3 4096 33574977 /root
lsof 1745 root cwd DIR 8,3 4096 33574977 /root
(3):lsof +D /root 可以遞迴檢視某個目錄下的目錄有誰在使用;
[root@localhost_002 ~]# lsof +D /root
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 1198 root cwd DIR 8,3 4096 33574977 /root
bash 1242 root cwd DIR 8,3 4096 33574977 /root
bash 1624 root cwd DIR 8,3 4096 33574977 /root
vim 1725 root cwd DIR 8,3 4096 33574977 /root
vim 1725 root 4u REG 8,3 16384 37237431 /root/.2.txt.swp
lsof 1756 root cwd DIR 8,3 4096 33574977 /root
lsof 1757 root cwd DIR 8,3 4096 33574977 /root
註釋:如上圖例,檢視到/root/.2.txt.swp的;因為我剛剛在另外一個終端編輯過這個檔案;