Linux技術——lsof命令詳解
簡介:
lsof命令是一個列出當前系統開啟檔案的工具。
1、直接輸入命令 lsof
終端下輸入lsof就會顯示系統開啟的所有檔案。由於lsof會訪問核心記憶體和各種檔案,必須以root使用者來執行該命令。
在終端下直接輸入lsof,輸入一下結果,輸出太多內容。我輸入的是lsof | less ,下面擷取了前一部分內容:COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
init 1 root cwd DIR 8,1 4096 2 /
init 1 root rtd DIR 8,1 4096 2 /
init 1 root txt REG 8,1 265848 786591 /sbin/init
init 1 root mem REG 8,1 47712 266561 /lib/x86_64-linux-gnu/libnss_files-2.19.so
init 1 root mem REG 8,1 47760 266571 /lib/x86_64-linux-gnu/libnss_nis-2.19.so
init 1 root mem REG 8,1 97296 266555 /lib/x86_64-linux-gnu/libnsl-2.19.so
init 1 root mem REG 8,1 39824 266557 /lib/x86_64-linux-gnu/libnss_compat-2.19.so
init 1 root mem REG 8,1 14664 266503 /lib/x86_64-linux-gnu/libdl-2.19.so
init 1 root mem REG 8,1 252032 266589 /lib/x86_64-linux-gnu/libpcre.so.3.13.1
init 1 root mem REG 8,1 141574 266606 /lib/x86_64-linux-gnu/libpthread-2.19.so
init 1 root mem REG 8,1 1845024 266486 /lib/x86_64-linux-gnu/libc-2.19.so
init 1 root mem REG 8,1 31792 266614 /lib/x86_64-linux-gnu/librt-2.19.so
init 1 root mem REG 8,1 39328 266526 /lib/x86_64-linux-gnu/libjson-c.so.2.0.0
init 1 root mem REG 8,1 134296 266616 /lib/x86_64-linux-gnu/libselinux.so.1
init 1 root mem REG 8,1 281552 266500 /lib/x86_64-linux-gnu/libdbus-1.so.3.7.6
init 1 root mem REG 8,1 38920 266548 /lib/x86_64-linux-gnu/libnih-dbus.so.1.0.0
init 1 root mem REG 8,1 96280 266550 /lib/x86_64-linux-gnu/libnih.so.1.0.0
init 1 root mem REG 8,1 149120 266462 /lib/x86_64-linux-gnu/ld-2.19.so
init 1 root 0u CHR 1,3 0t0 5294 /dev/null
init 1 root 1u CHR 1,3 0t0 5294 /dev/null
init 1 root 2u CHR 1,3 0t0 5294 /dev/null
init 1 root 3r FIFO 0,8 0t0 7021 pipe
init 1 root 4w FIFO 0,8 0t0 7021 pipe
init 1 root 5r 0000 0,9 0 5249 anon_inode
init 1 root 6r 0000 0,9 0 5249 anon_inode
init 1 root 7u unix 0xffff880036c4a700 0t0 7022 @/com/ubuntu/upstart
init 1 root 9u unix 0xffff8800d7115500 0t0 7879 socket
init 1 root 10u unix 0xffff8800d894ae00 0t0 7357 @/com/ubuntu/upstart
init 1 root 11u unix 0xffff8800d736dc00 0t0 8042 @/com/ubuntu/upstart
init 1 root 12u unix 0xffff8800d7115180 0t0 7803 @/com/ubuntu/upstart
2、lsof輸出各列資訊的意義如下:
COMMAND:程式的名稱PID:程式識別符號
USER:程式所有者
FD:檔案描述符,應用程式通過檔案描述符識別該檔案。如cwd、txt、數字等
TYPE:檔案型別,如DIR、REG等
DEVICE:指定磁碟的名稱
SIZE:檔案的大小
NODE:索引節點(檔案在磁碟上的標識)
NAME:開啟檔案的確切名稱
FD列的型別含義:
cwd值表示應用程式的當前工作目錄,這是該應用程式啟動的目錄,除非它本身對這個目錄進行更改。
txt 型別的檔案是程式程式碼,如應用程式二進位制檔案本身或共享庫,如上列表中顯示的 /sbin/init 程式。
數值表示應用程式的檔案描述符,這是開啟該檔案時返回的一個整數。u表示該檔案被開啟並處於讀取/寫入模式,而不是隻讀r或只寫w模式。、
同時還有大寫的W表示該應用程式具有對整個檔案的寫鎖。該檔案描述符用於確保每次只能開啟一個應用程式例項。
初始開啟每個應用程式時,都具有三個檔案描述符,從 0 到 2,分別表示標準輸入、輸出和錯誤流。所以大多數應用程式所開啟的檔案的 FD 都是從 3 開始。
TYPE列的型別含義:
REG 和 DIR分別表示檔案和目錄;CHR 和 BLK,分別表示字元和塊裝置; UNIX、FIFO 和 IPv4,分別表示 UNIX 域套接字、先進先出 (FIFO) 佇列和網際協議 (IP) 套接字。
3、常用引數:
lsof abc.txt 顯示開啟檔案abc.txt的程式lsof -c abc 顯示abc程式現在開啟的檔案
lsof -c -p 1234 列出程式號為1234的程式所開啟的檔案
lsof -g gid 顯示歸屬gid的程式情況
lsof +d /usr/local/ 顯示目錄下被程式開啟的檔案
lsof +D /usr/local/ 同上,但是會搜尋目錄下的目錄,時間較長
lsof -d 4 顯示使用fd為4的程式
lsof -i 用以顯示符合條件的程式情況
例子1:檢視開啟檔案/dev/ptmx的程式
root@linux_ever:~# lsof /dev/ptmx
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
init 1 root 17u CHR 5,2 0t0 6303 /dev/ptmx
init 1 root 20u CHR 5,2 0t0 6303 /dev/ptmx
init 1 root 22u CHR 5,2 0t0 6303 /dev/ptmx
init 1 root 23u CHR 5,2 0t0 6303 /dev/ptmx
init 1 root 25u CHR 5,2 0t0 6303 /dev/ptmx
init 1 root 26u CHR 5,2 0t0 6303 /dev/ptmx
init 1 root 33u CHR 5,2 0t0 6303 /dev/ptmx
init 1 root 34u CHR 5,2 0t0 6303 /dev/ptmx
init 1842 root 14u CHR 5,2 0t0 6303 /dev/ptmx
init 1842 root 16u CHR 5,2 0t0 6303 /dev/ptmx
init 1842 root 21u CHR 5,2 0t0 6303 /dev/ptmx
init 1842 root 24u CHR 5,2 0t0 6303 /dev/ptmx
init 1842 root 27u CHR 5,2 0t0 6303 /dev/ptmx
init 1842 root 28u CHR 5,2 0t0 6303 /dev/ptmx
init 1842 root 31u CHR 5,2 0t0 6303 /dev/ptmx
init 1842 root 32u CHR 5,2 0t0 6303 /dev/ptmx
init 1842 root 33u CHR 5,2 0t0 6303 /dev/ptmx
init 1842 root 36u CHR 5,2 0t0 6303 /dev/ptmx
init 1842 root 37u CHR 5,2 0t0 6303 /dev/ptmx
init 1842 root 38u CHR 5,2 0t0 6303 /dev/ptmx
init 1842 root 39u CHR 5,2 0t0 6303 /dev/ptmx
init 1842 root 40u CHR 5,2 0t0 6303 /dev/ptmx
init 1842 root 41u CHR 5,2 0t0 6303 /dev/ptmx
init 1842 root 42u CHR 5,2 0t0 6303 /dev/ptmx
init 1842 root 43u CHR 5,2 0t0 6303 /dev/ptmx
gnome-ter 2751 root 14u CHR 5,2 0t0 6303 /dev/ptmx
sshd 20723 root 8u CHR 5,2 0t0 6303 /dev/ptmx
sshd 20723 root 10u CHR 5,2 0t0 6303 /dev/ptmx
sshd 20723 root 11u CHR 5,2 0t0 6303 /dev/ptmx
sshd 21617 root 8u CHR 5,2 0t0 6303 /dev/ptmx
sshd 21617 root 10u CHR 5,2 0t0 6303 /dev/ptmx
sshd 21617 root 11u CHR 5,2 0t0 6303 /dev/ptmx
sshd 21858 root 8u CHR 5,2 0t0 6303 /dev/ptmx
sshd 21858 root 10u CHR 5,2 0t0 6303 /dev/ptmx
sshd 21858 root 11u CHR 5,2 0t0 6303 /dev/ptmx
例子2:檢視sshd程式現在開啟的檔案
root@linux_ever:~# lsof -c sshd
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 813 root cwd DIR 8,1 4096 2 /
sshd 813 root rtd DIR 8,1 4096 2 /
sshd 813 root txt REG 8,1 766784 409713 /usr/sbin/sshd
sshd 813 root mem REG 8,1 47712 266561 /lib/x86_64-linux-gnu/libnss_files-2.19.so
sshd 813 root mem REG 8,1 47760 266571 /lib/x86_64-linux-gnu/libnss_nis-2.19.so
sshd 813 root mem REG 8,1 39824 266557 /lib/x86_64-linux-gnu/libnss_compat-2.19.so
sshd 813 root mem REG 8,1 101240 266612 /lib/x86_64-linux-gnu/libresolv-2.19.so
sshd 813 root mem REG 8,1 14256 266529 /lib/x86_64-linux-gnu/libkeyutils.so.1.4
sshd 813 root mem REG 8,1 43672 532257 /usr/lib/x86_64-linux-gnu/libkrb5support.so.0.1
sshd 813 root mem REG 8,1 186824 532251 /usr/lib/x86_64-linux-gnu/libk5crypto.so.3.1
sshd 813 root mem REG 8,1 31792 266614 /lib/x86_64-linux-gnu/librt-2.19.so
sshd 813 root mem REG 8,1 141574 266606 /lib/x86_64-linux-gnu/libpthread-2.19.so
sshd 813 root mem REG 8,1 252032 266589 /lib/x86_64-linux-gnu/libpcre.so.3.13.1
sshd 813 root mem REG 8,1 14664 266503 /lib/x86_64-linux-gnu/libdl-2.19.so
sshd 813 root mem REG 8,1 104936 266476 /lib/x86_64-linux-gnu/libaudit.so.1.0.0
sshd 813 root mem REG 8,1 97296 266555 /lib/x86_64-linux-gnu/libnsl-2.19.so
sshd 813 root mem REG 8,1 1845024 266486 /lib/x86_64-linux-gnu/libc-2.19.so
列出了部分結果。
例子3:程式ID為813的程式開啟的檔案
root@linux_ever:~# lsof -p 813
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 813 root cwd DIR 8,1 4096 2 /
sshd 813 root rtd DIR 8,1 4096 2 /
sshd 813 root txt REG 8,1 766784 409713 /usr/sbin/sshd
sshd 813 root mem REG 8,1 47712 266561 /lib/x86_64-linux-gnu/libnss_files-2.19.so
sshd 813 root mem REG 8,1 47760 266571 /lib/x86_64-linux-gnu/libnss_nis-2.19.so
sshd 813 root mem REG 8,1 39824 266557 /lib/x86_64-linux-gnu/libnss_compat-2.19.so
sshd 813 root mem REG 8,1 101240 266612 /lib/x86_64-linux-gnu/libresolv-2.19.so
sshd 813 root mem REG 8,1 14256 266529 /lib/x86_64-linux-gnu/libkeyutils.so.1.4
sshd 813 root mem REG 8,1 43672 532257 /usr/lib/x86_64-linux-gnu/libkrb5support.so.0.1
sshd 813 root mem REG 8,1 186824 532251 /usr/lib/x86_64-linux-gnu/libk5crypto.so.3.1
sshd 813 root mem REG 8,1 31792 266614 /lib/x86_64-linux-gnu/librt-2.19.so
sshd 813 root mem REG 8,1 141574 266606 /lib/x86_64-linux-gnu/libpthread-2.19.so
sshd 813 root mem REG 8,1 252032 266589 /lib/x86_64-linux-gnu/libpcre.so.3.13.1
sshd 813 root mem REG 8,1 14664 266503 /lib/x86_64-linux-gnu/libdl-2.19.so
sshd 813 root mem REG 8,1 104936 266476 /lib/x86_64-linux-gnu/libaudit.so.1.0.0
sshd 813 root mem REG 8,1 97296 266555 /lib/x86_64-linux-gnu/libnsl-2.19.so
sshd 813 root mem REG 8,1 1845024 266486 /lib/x86_64-linux-gnu/libc-2.19.so
列出了部分結果。例子4:顯示/root/目錄下被程式開啟的檔案
root@linux_ever:~# lsof +d /root/
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
init 1842 root cwd DIR 8,1 4096 1048579 /root
init 1842 root 2w REG 8,1 546 1050044 /root/.xsession-errors
VBoxClien 1926 root 4uW REG 8,1 5 1076068 /root/.vboxclient-clipboard.pid
VBoxClien 1937 root 4uW REG 8,1 5 1076123 /root/.vboxclient-display.pid
VBoxClien 1941 root 4uW REG 8,1 5 1076124 /root/.vboxclient-seamless.pid
VBoxClien 1949 root 4uW REG 8,1 5 1076125 /root/.vboxclient-draganddrop.pid
upstart-e 1984 root cwd DIR 8,1 4096 1048579 /root
window-st 1993 root cwd DIR 8,1 4096 1048579 /root
upstart-f 2003 root cwd DIR 8,1 4096 1048579 /root
列出了部分結果。例子5:顯示/root/目錄下被程式開啟的檔案,並搜尋子目錄
root@linux_ever:~# lsof +D /root/
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
init 1842 root cwd DIR 8,1 4096 1048579 /root
init 1842 root 2w REG 8,1 546 1050044 /root/.xsession-errors
init 1842 root 12w REG 8,1 1001 1051098 /root/.cache/upstart/dbus.log
init 1842 root 13w REG 8,1 27348 1068051 /root/.cache/upstart/gnome-session-Unity.log
init 1842 root 18w REG 8,1 3597 1077157 /root/.cache/upstart/unity-panel-service.log
init 1842 root 19w REG 8,1 106 1077132 /root/.cache/upstart/unity-settings-daemon.log
init 1842 root 25w REG 8,1 125 1076111 /root/.cache/upstart/indicator-printers.log
VBoxClien 1926 root 4uW REG 8,1 5 1076068 /root/.vboxclient-clipboard.pid
VBoxClien 1937 root 4uW REG 8,1 5 1076123 /root/.vboxclient-display.pid
VBoxClien 1941 root 4uW REG 8,1 5 1076124 /root/.vboxclient-seamless.pid
VBoxClien 1949 root 4uW REG 8,1 5 1076125 /root/.vboxclient-draganddrop.pid
列出了部分結果。例子6:顯示使用fd為5的所有程式
root@linux_ever:~# lsof -d 5
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
init 1 root 5r 0000 0,9 0 5249 anon_inode
upstart-u 268 root 5w FIFO 0,8 0t0 7347 pipe
systemd-u 283 root 5u REG 0,16 8 242959 /run/udev/queue.bin
dbus-daem 408 messagebus 5r 0000 0,9 0 5249 anon_inode
bluetooth 452 root 5u unix 0xffff8800d72d8000 0t0 8015 socket
systemd-l 491 root 5r REG 0,15 4096 2813 /sys/devices/virtual/tty/tty0/active
avahi-dae 507 avahi 5u unix 0xffff8800d736ca80 0t0 8074 socket
ModemMana 558 root 5u unix 0xffff8800d7200380 0t0 8289 socket
upstart-f 597 root 5w FIFO 0,8 0t0 7795 pipe
列出了部分結果。參考文章:
相關文章
- linux lsof命令詳解Linux
- Linux-lsof命令詳解Linux
- lsof命令詳解
- Linux lsof詳解Linux
- Linux技術——tcpdump命令詳解LinuxTCP
- Linux技術——netstat命令詳解Linux
- Linux命令--lsofLinux
- lsof 詳解
- Linux lsof命令解析Linux
- linux每日命令(39):lsof命令Linux
- linux沒有lsof命令Linux
- 每日Linux命令(4):lsofLinux
- Linux lsof 命令簡介Linux
- lsof 命令
- lsof命令
- 每天一個 Linux 命令(51): lsof 命令Linux
- linux下檢視埠命令lsofLinux
- Linux 有用的命令之 - lsof(轉)Linux
- Linux at命令詳解Linux
- Linux技術——常用 linux 命令Linux
- JNI技術詳解
- lsof命令簡介
- lsof命令小結
- Linux xargs 命令詳解Linux
- Linux sed 命令詳解Linux
- Linux awk 命令詳解Linux
- linux top 命令詳解Linux
- Linux diff命令詳解Linux
- Linux chattr命令詳解Linux
- Linux命令top詳解Linux
- Linux screen 命令詳解Linux
- Linux find 命令詳解Linux
- linux top命令詳解Linux
- linux命令詳解:sortLinux
- 【Linux】tcpdump命令詳解LinuxTCP
- linux tail 命令詳解LinuxAI
- Linux more命令詳解Linux
- linux grep命令詳解Linux