lsof用法


原文地址:https://www.cnblogs.com/architectforest/p/12638773.html

一,lsof的用途

lsof,List Open Files 列出當前系統打開文件的工具。

在linux環境下,任何事物都以文件的形式存在,

所以lsof通過文件不僅僅可以訪問常規數據,還可以訪問網絡連接和硬件

 

二,lsof安裝:

1,查看lsof所屬的包

[root@blog ~]# whereis lsof lsof: /usr/bin/lsof /usr/share/man/man1/lsof.1.gz [root@blog ~]# rpm -qf /usr/bin/lsof lsof-4.91-2.el8.x86_64

 

2,如果提示找不到lsof命令,可以用yum安裝

[root@blog ~]# yum install lsof

 

三,查看lsof的版本和幫助

1,查看版本

[root@blog ~]# lsof -v
lsof version information:
    revision: 4.91
...

 

2,查看幫助:

[root@blog ~]# lsof -h 

 

四,lsof的應用例子:

1,查看系統中所有打開的文件

[root@blog ~]# lsof

 

2,查看某個用戶打開的文件

# -u 參數用來指定要查看的用戶

復制代碼
[root@blog ~]# lsof -u mysql
COMMAND     PID  USER   FD      TYPE             DEVICE   SIZE/OFF NODE NAME mysqld_sa 17246 mysql cwd DIR 253,1 129 201372497 /usr/local/soft/mysql mysqld_sa 17246 mysql rtd DIR 253,1 272 128 / mysqld_sa 17246 mysql txt REG 253,1 1219216 16999680 /usr/bin/bash ...
復制代碼

 

3,查看有哪些進程正在打開某個文件?

[root@blog ~]# lsof /data/mysql/log/mysql-slow.log
COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME mysqld 17700 mysql 29w REG 253,1 11018 34357947 /data/mysql/log/mysql-slow.log

說明:lsof后加文件名即可列出正在打開文件的進程

 

4,列出某個進程正在打開的文件(最常用的用法)

# -p 指定要查看的進程

復制代碼
[root@blog ~]# lsof -p 17700 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME mysqld 17700 mysql cwd DIR 253,1 4096 302055050 /data/mysql/data mysqld 17700 mysql rtd DIR 253,1 272 128 / mysqld 17700 mysql txt REG 253,1 1078700088 218133053 /usr/local/soft/mysql/bin/mysqld mysqld 17700 mysql DEL REG 0,17 3207767 /[aio] mysqld 17700 mysql DEL REG 0,17 3207766 /[aio] mysqld 17700 mysql DEL REG 0,17 3207765 /[aio] mysqld 17700 mysql DEL REG 0,17 3207764 /[aio] ...
復制代碼

說明:

 

輸出字段的說明:

FD 表示文件描述符號:

如果值是3w,表示:它的文件描述符是 3 號,而 3 后面的 w ,表示以寫的方式打開

TYPE 表示文件類型

NAME 表示文件路徑

 

5,列出多個進程正在打開的文件(最常用的用法)

[root@blog ~]# lsof -p 7492,7493,7494 

 

6,列出所有的網絡連接

# -i 用來查看網絡連接的進程

復制代碼
[root@blog ~]# lsof -i
COMMAND     PID   USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME NetworkMa 834 root 18u IPv4 21344 0t0 UDP blog:bootpc nginx 7491 root 22u IPv4 3087363 0t0 TCP *:http (LISTEN) nginx 7491 root 23u IPv4 3087364 0t0 TCP *:54321 (LISTEN) nginx 7492 nginx 22u IPv4 3087363 0t0 TCP *:http (LISTEN) 
復制代碼

 

7,指定的連接的類型:

列出所有tcp 網絡連接信息

[root@blog ~]# lsof -i tcp

 

列出所有udp 網絡連接信息

[root@blog ~]# lsof -i udp

 

8,列出在使用某個端口的進程

#  -i :port用來指定要查看的端口

[root@blog ~]# lsof -i :3306 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME mysqld 17700 mysql 31u IPv6 3206926 0t0 TCP *:mysql (LISTEN)

 

9,列出nginx進程現在打開的文件

# -c 指定要查看的進程的名字

[root@blog ~]# lsof -c nginx

 

10,-n參數:不將IP轉換為hostname,默認會進行轉換,即默認不加上-n參數,

[root@blog ~]# lsof -n -i :3306 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME mysqld 17700 mysql 31u IPv6 3206926 0t0 TCP *:mysql (LISTEN)

 

11,列出所有使用fd為指定值的進程

# -d:指定文件描述符的值

[root@blog ~]# lsof -d 1 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME systemd 1 root 1u CHR 1,3 0t0 11236 /dev/null systemd-j 513 root 1w CHR 1,3 0t0 11236 /dev/null 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM