建設(shè)企業(yè)網(wǎng)站對(duì)公百度網(wǎng)盤登錄入口官網(wǎng)
Linux系統(tǒng)之lsof命令的基本使用
- 一、lsof命令的基本使用
- 二、lsof命令的使用幫助
- 2.1 lsof命令的help幫助信息
- 2.2 lsof命令幫助解釋
- 三、lsof的基本使用
- 3.1 直接使用lsof命令
- 3.2 查看某個(gè)進(jìn)程打開(kāi)的所有文件
- 3.3 查看某個(gè)用戶打開(kāi)的所有文件
- 3.4 查看某個(gè)文件被哪些進(jìn)程打開(kāi)
- 3.5 查看某個(gè)端口被哪些進(jìn)程占用
- 3.6 查看某個(gè)目錄下被哪些進(jìn)程打開(kāi)的文件
- 3.7 查看打開(kāi)某個(gè)類型文件的進(jìn)程列表
- 四、lsof使用注意事項(xiàng)
一、lsof命令的基本使用
lsof(list open files)命令是用于查看系統(tǒng)中打開(kāi)文件的工具,可以列出當(dāng)前系統(tǒng)打開(kāi)的所有文件(包括文件、文件夾、網(wǎng)絡(luò)連接等),可以幫助我們查找一些占用磁盤空間或者占用網(wǎng)絡(luò)帶寬的進(jìn)程。
二、lsof命令的使用幫助
2.1 lsof命令的help幫助信息
查看lsof命令的help幫助信息
[root@jeven ~]# lsof --help
lsof: illegal option character: -
lsof: -e not followed by a file system path: "lp"
lsof 4.87latest revision: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/latest FAQ: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/FAQlatest man page: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/lsof_manusage: [-?abhKlnNoOPRtUvVX] [+|-c c] [+|-d s] [+D D] [+|-f[gG]] [+|-e s][-F [f]] [-g [s]] [-i [i]] [+|-L [l]] [+m [m]] [+|-M] [-o [o]] [-p s]
[+|-r [t]] [-s [p:s]] [-S [t]] [-T [t]] [-u s] [+|-w] [-x [fl]] [--] [names]
Defaults in parentheses; comma-separated set (s) items; dash-separated ranges.-?|-h list help -a AND selections (OR) -b avoid kernel blocks-c c cmd c ^c /c/[bix] +c w COMMAND width (9) +d s dir s files-d s select by FD set +D D dir D tree *SLOW?* +|-e s exempt s *RISKY*-i select IPv[46] files -K list tasKs (threads) -l list UID numbers-n no host names -N select NFS files -o list file offset-O no overhead *RISKY* -P no port names -R list paRent PID-s list file size -t terse listing -T disable TCP/TPI info-U select Unix socket -v list version info -V verbose search+|-w Warnings (+) -X skip TCP&UDP* files -Z Z context [Z]-- end option scan+f|-f +filesystem or -file names +|-f[gG] flaGs-F [f] select fields; -F? for help+|-L [l] list (+) suppress (-) link counts < l (0 = all; default = 0)+m [m] use|create mount supplement+|-M portMap registration (-) -o o o 0t offset digits (8)-p s exclude(^)|select PIDs -S [t] t second stat timeout (15)-T qs TCP/TPI Q,St (s) info-g [s] exclude(^)|select and print process group IDs-i i select by IPv[46] address: [46][proto][@host|addr][:svc_list|port_list]+|-r [t[m<fmt>]] repeat every t seconds (15); + until no files, - forever.An optional suffix to t is m<fmt>; m must separate t from <fmt> and<fmt> is an strftime(3) format for the marker line.-s p:s exclude(^)|select protocol (p = TCP|UDP) states by name(s).-u s exclude(^)|select login|UID set s-x [fl] cross over +d|+D File systems or symbolic Linksnames select named files or files on named file systems
Anyone can list all files; /dev warnings disabled; kernel ID check disabled.
2.2 lsof命令幫助解釋
- 語(yǔ)法
lsof [選項(xiàng)] [文件、目錄名或進(jìn)程ID]
- 選項(xiàng)
-a:列出打開(kāi)文件存在的進(jìn)程;
-c<進(jìn)程名>:列出指定進(jìn)程所打開(kāi)的文件;
-g:列出GID號(hào)進(jìn)程詳情;
-d<文件號(hào)>:列出占用該文件號(hào)的進(jìn)程;
+d<目錄>:列出目錄下被打開(kāi)的文件;
+D<目錄>:遞歸列出目錄下被打開(kāi)的文件;
-n<目錄>:列出使用NFS的文件;
-i<條件>:列出符合條件的進(jìn)程(協(xié)議、:端口、 @ip )
-p<進(jìn)程號(hào)>:列出指定進(jìn)程號(hào)所打開(kāi)的文件;
-u:列出UID號(hào)進(jìn)程詳情;
-h:顯示幫助信息;
-v:顯示版本信息
三、lsof的基本使用
3.1 直接使用lsof命令
使用lsof命令可以列出當(dāng)前系統(tǒng)中打開(kāi)的所有文件和網(wǎng)絡(luò)連接,包括哪些進(jìn)程打開(kāi)了哪些文件、哪些網(wǎng)絡(luò)連接被哪些進(jìn)程使用等等。
lsof
command PID USER FD type DEVICE SIZE NODE NAME
COMMAND列:打開(kāi)文件的進(jìn)程的名稱。
PID列:打開(kāi)文件的進(jìn)程的標(biāo)識(shí)符。
USER列:打開(kāi)文件的進(jìn)程的所有者。
FD列:打開(kāi)文件的進(jìn)程的文件描述符。
TYPE列:打開(kāi)文件的類型,如REG(常規(guī)文件)、DIR(目錄)、CHR(字符設(shè)備)、FIFO(管道)、SOCK(套接字)等。
DEVICE列:打開(kāi)文件所在的設(shè)備的編號(hào)。
SIZE/OFF列:文件的大小或偏移量。
NODE列:打開(kāi)文件的節(jié)點(diǎn)號(hào)碼。
NAME列:打開(kāi)文件的路徑和文件名。
3.2 查看某個(gè)進(jìn)程打開(kāi)的所有文件
例如查詢sshd服務(wù)進(jìn)程的PID號(hào)
[root@jeven ~]# ps aux |grep ssh
root 9347 0.0 0.0 112756 4312 ? Ss 06:22 0:00 /usr/sbin/sshd -D
root 30102 0.0 0.0 161316 6052 ? Ss 17:14 0:00 sshd: root@pts/1
root 30109 0.0 0.0 161312 6040 ? Ss 17:14 0:00 sshd: root@notty
root 30154 0.0 0.0 74176 2940 ? Ss 17:14 0:00 /usr/libexec/openssh/sftp-server
root 31429 0.0 0.0 112712 968 pts/1 S+ 18:57 0:00 grep --color=auto ssh
使用lsof查詢?cè)撨M(jìn)程打開(kāi)的所有文件
lsof -p 9347
3.3 查看某個(gè)用戶打開(kāi)的所有文件
查看某個(gè)用戶打開(kāi)的所有文件
[root@jeven ~]# lsof -u apache |head
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 31674 apache cwd DIR 253,0 278 64 /
httpd 31674 apache rtd DIR 253,0 278 64 /
httpd 31674 apache txt REG 253,0 527736 8888916 /usr/sbin/httpd
httpd 31674 apache mem REG 253,0 37216 9300529 /usr/lib64/libnss_sss.so.2
httpd 31674 apache mem REG 253,0 105824 8467438 /usr/lib64/libresolv-2.17.so
httpd 31674 apache mem REG 253,0 31408 8467426 /usr/lib64/libnss_dns-2.17.so
httpd 31674 apache mem REG 253,0 61624 8467428 /usr/lib64/libnss_files-2.17.so
httpd 31674 apache mem REG 253,0 27720 51070491 /usr/lib64/httpd/modules/mod_cgi.so
httpd 31674 apache mem REG 253,0 68192 8541901 /usr/lib64/libbz2.so.1.0.6
3.4 查看某個(gè)文件被哪些進(jìn)程打開(kāi)
查看某個(gè)文件被哪些進(jìn)程打開(kāi)
[root@jeven ~]# lsof /usr/sbin/httpd
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 31673 root txt REG 253,0 527736 8888916 /usr/sbin/httpd
httpd 31674 apache txt REG 253,0 527736 8888916 /usr/sbin/httpd
httpd 31675 apache txt REG 253,0 527736 8888916 /usr/sbin/httpd
httpd 31676 apache txt REG 253,0 527736 8888916 /usr/sbin/httpd
httpd 31677 apache txt REG 253,0 527736 8888916 /usr/sbin/httpd
httpd 31678 apache txt REG 253,0 527736 8888916 /usr/sbin/httpd
3.5 查看某個(gè)端口被哪些進(jìn)程占用
查看所有網(wǎng)絡(luò)連接
lsof -i
查看某個(gè)端口被哪些進(jìn)程占用
[root@jeven ~]# lsof -i :22
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 9347 root 3u IPv4 59897 0t0 TCP *:ssh (LISTEN)
sshd 9347 root 4u IPv6 59899 0t0 TCP *:ssh (LISTEN)
sshd 30102 root 3u IPv4 259806 0t0 TCP jeven.dhcp-route:ssh->DESKTOP-R1B8FG7.dhcp-route:58104 (ESTABLISHED)
sshd 30109 root 3u IPv4 258689 0t0 TCP jeven.dhcp-route:ssh->DESKTOP-R1B8FG7.dhcp-route:58107 (ESTABLISHED)
3.6 查看某個(gè)目錄下被哪些進(jìn)程打開(kāi)的文件
查看某個(gè)目錄下被哪些進(jìn)程打開(kāi)的文件
[root@jeven ~]# lsof +D /tmp
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
fastgithu 8959 root mem-R REG 253,0 4096 1017250 /tmp/.dotnet/shm/global/FastGithub
fastgithu 8959 root 8u unix 0xffff930eaf1e5800 0t0 52317 /tmp/dotnet-diagnostic-8959-1410-socket
fastgithu 8959 root 108r DIR 253,0 20 219680441 /tmp/.dotnet/shm
fastgithu 8959 root 109uR REG 253,0 4096 1017250 /tmp/.dotnet/shm/global/FastGithub
postmaste 9582 postgres 9u unix 0xffff930d35c18800 0t0 66632 /tmp/.s.PGSQL.5432
X 9603 root 8u unix 0xffff930d32916000 0t0 65977 /tmp/.X11-unix/X0
gnome-ses 12391 gdm 13u unix 0xffff930d2c1e7c00 0t0 69454 /tmp/.ICE-unix/12391
3.7 查看打開(kāi)某個(gè)類型文件的進(jìn)程列表
查看打開(kāi)某個(gè)類型文件的進(jìn)程列表
[root@jeven ~]# lsof -t /usr/sbin/httpd
31673
31674
31675
31676
31677
31678
四、lsof使用注意事項(xiàng)
-
需要root權(quán)限才能使用lsof命令。
-
lsof命令需要一定時(shí)間才能完成掃描,因此不應(yīng)在生產(chǎn)環(huán)境下濫用。
-
使用lsof命令時(shí)應(yīng)確保使用的是最新版本,以防止出現(xiàn)已知的bug。
-
使用時(shí)應(yīng)仔細(xì)查看命令輸出,尤其是對(duì)于打開(kāi)套接字的程序及其連接,以避免意外暴露敏感信息。
-
lsof命令的掃描范圍包括所有已打開(kāi)的文件和網(wǎng)絡(luò)套接字,因此執(zhí)行時(shí)可能會(huì)對(duì)系統(tǒng)性能產(chǎn)生一定的影響,如果對(duì)性能敏感,應(yīng)考慮使用其他更輕量級(jí)的工具。
-
在使用lsof命令時(shí),應(yīng)確保已經(jīng)對(duì)電腦進(jìn)行了必要的安全保護(hù),以避免受到黑客攻擊或數(shù)據(jù)泄露。