Linux系统之lsof命令的基本使用

Linux系统之lsof命令的基本使用

  • 一、lsof命令的基本使用
  • 二、lsof命令的使用帮助
    • 2.1 lsof命令的help帮助信息
    • 2.2 lsof命令帮助解释
  • 三、lsof的基本使用
    • 3.1 直接使用lsof命令
    • 3.2 查看某个进程打开的所有文件
    • 3.3 查看某个用户打开的所有文件
    • 3.4 查看某个文件被哪些进程打开
    • 3.5 查看某个端口被哪些进程占用
    • 3.6 查看某个目录下被哪些进程打开的文件
    • 3.7 查看打开某个类型文件的进程列表
  • 四、lsof使用注意事项

在这里插入图片描述

一、lsof命令的基本使用

lsof(list open files)命令是用于查看系统中打开文件的工具,可以列出当前系统打开的所有文件(包括文件、文件夹、网络连接等),可以帮助我们查找一些占用磁盘空间或者占用网络带宽的进程。

二、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命令帮助解释

  • 语法
lsof [选项] [文件、目录名或进程ID]
  • 选项
-a:列出打开文件存在的进程;
-c<进程名>:列出指定进程所打开的文件;
-g:列出GID号进程详情;
-d<文件号>:列出占用该文件号的进程;
+d<目录>:列出目录下被打开的文件;
+D<目录>:递归列出目录下被打开的文件;
-n<目录>:列出使用NFS的文件;
-i<条件>:列出符合条件的进程(协议、:端口、 @ip )
-p<进程号>:列出指定进程号所打开的文件;
-u:列出UID号进程详情;
-h:显示帮助信息;
-v:显示版本信息

三、lsof的基本使用

3.1 直接使用lsof命令

使用lsof命令可以列出当前系统中打开的所有文件和网络连接,包括哪些进程打开了哪些文件、哪些网络连接被哪些进程使用等等。

lsof
command     PID USER   FD      type             DEVICE     SIZE       NODE NAME

在这里插入图片描述

COMMAND列:打开文件的进程的名称。
PID列:打开文件的进程的标识符。
USER列:打开文件的进程的所有者。
FD列:打开文件的进程的文件描述符。
TYPE列:打开文件的类型,如REG(常规文件)、DIR(目录)、CHR(字符设备)、FIFO(管道)、SOCK(套接字)等。
DEVICE列:打开文件所在的设备的编号。
SIZE/OFF列:文件的大小或偏移量。
NODE列:打开文件的节点号码。
NAME列:打开文件的路径和文件名。

3.2 查看某个进程打开的所有文件

例如查询sshd服务进程的PID号

[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查询该进程打开的所有文件

lsof -p 9347

在这里插入图片描述

3.3 查看某个用户打开的所有文件

查看某个用户打开的所有文件

[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 查看某个文件被哪些进程打开

查看某个文件被哪些进程打开

[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 查看某个端口被哪些进程占用

查看所有网络连接

lsof -i

查看某个端口被哪些进程占用

[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 查看某个目录下被哪些进程打开的文件

查看某个目录下被哪些进程打开的文件

[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 查看打开某个类型文件的进程列表

查看打开某个类型文件的进程列表

[root@jeven ~]# lsof -t /usr/sbin/httpd
31673
31674
31675
31676
31677
31678

四、lsof使用注意事项

  • 需要root权限才能使用lsof命令。

  • lsof命令需要一定时间才能完成扫描,因此不应在生产环境下滥用。

  • 使用lsof命令时应确保使用的是最新版本,以防止出现已知的bug。

  • 使用时应仔细查看命令输出,尤其是对于打开套接字的程序及其连接,以避免意外暴露敏感信息。

  • lsof命令的扫描范围包括所有已打开的文件和网络套接字,因此执行时可能会对系统性能产生一定的影响,如果对性能敏感,应考虑使用其他更轻量级的工具。

  • 在使用lsof命令时,应确保已经对电脑进行了必要的安全保护,以避免受到黑客攻击或数据泄露。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/195177.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

openGauss学习笔记-127 openGauss 数据库管理-设置账本数据库-修复账本数据库

文章目录 openGauss学习笔记-127 openGauss 数据库管理-设置账本数据库-修复账本数据库127.1 前提条件127.2 背景信息127.3 操作步骤 openGauss学习笔记-127 openGauss 数据库管理-设置账本数据库-修复账本数据库 127.1 前提条件 系统中需要有审计管理员或者具有审计管理员权…

软考小记-软件工程

模块的控制范围包括模块本身及其所有的从属模块。模块的作用范围是指模块一个判定的作用范围&#xff0c;凡是受这个判定影响的所有模块都属于这个判定的作用范围.&#xff0c;原则上一个模块的作用范围应该在其控制范围之内&#xff0c;若没有&#xff0c;则可以将判定所在模块…

图像处理01 小波变换

一.为什么需要离散小波变换 连续小波分解&#xff0c;通过改变分析窗口大小&#xff0c;在时域上移动窗口和基信号相乘&#xff0c;最后在全时域上整合。通过离散化连续小波分解可以得到伪离散小波分解&#xff0c; 这种离散化带有大量冗余信息且计算成本较高。 小波变换的公…

【数据结构(二)】单链表(3)

文章目录 1. 链表介绍2. 单链表应用实例2.1. 顺序添加方式2.1.1. 思路分析2.1.2. 代码实现 2.2. 按照编号顺序添加方式2.2.1. 思路分析2.2.2. 代码实现 3. 单链表节点的修改3.1. 思路分析3.2. 代码实现 4. 单链表节点的删除4.1. 思路分析4.2. 代码实现 5. 单链表常见面试题5.1.…

map与set的封装

目录 红黑树的结点 与 红黑树的迭代器 红黑树的实现&#xff1a; 迭代器&#xff1a; ​编辑 红黑树的查找&#xff1a; 红黑树的插入&#xff1a; ​编辑 检查红色结点&#xff1a;​编辑红黑树的左旋 ​编辑红黑树的右旋 ​编辑红黑树的双旋 Map的封装 ​编辑set的…

Python----函数中的说明文档

说明文档&#xff1a;就是一行注释&#xff0c;在每次 定义一个函数后&#xff08;def XXX(): 的下一行&#xff09;&#xff0c;开发的人写一段注释文字&#xff0c;告诉别人这个函数是干嘛用的。 案例&#xff1a;定义函数的说明文档 ① 定义函数的说明文档 # 1、定义一个…

【洛谷 B2002】Hello,World!(顺序结构)

Hello,World! 题目描述 编写一个能够输出 Hello,World! 的程序。 提示&#xff1a; 使用英文标点符号&#xff1b;Hello,World! 逗号后面没有空格。H 和 W 为大写字母。 输入格式 输出格式 样例 #1 样例输入 #1 无样例输出 #1 Hello,World!思路 #include 是一个预处…

Js中clientX/Y、offsetX/Y和screenX/Y之间区别

Js中client、offset和screen的区别 前言图文解说实例代码解说 前言 本文主要讲解JavaScript中clientX、clientY、offsetX、offsetY、screenX、screenY之间的区别。 图文解说 在上图中&#xff0c;有三个框&#xff0c;第一个为屏幕&#xff0c;第二个为浏览器大小&#xff0c…

16. @PostConstruct注解和开关原理(验证码开关、IP开关)

1►PostConstruct注解 PostConstruct是java自带的注解&#xff0c;会在java项目启动的时候先执行下面的方法 2►开关原理&#xff08;验证码开关&#xff09; 我们的项目具有验证码功能&#xff0c;旧版不支持关闭&#xff0c;新版已经支持关闭了。 我们打开页面“参数管…

深信服AC流量管理技术

拓扑图 一.保证通道针对修仙部&#xff0c;访问网站&#xff0c;邮件&#xff0c;DNS&#xff0c;IM&#xff0c;办工 OA&#xff0c;微博论坛网上银行等常见应用保证带宽最低 50%&#xff0c;最高 100% 1. 先新建线路带宽 2.新增流量管理通道&#xff08;保证关键应用&#x…

如何在本地搭建Oracle数据库实现公网环境下通过PLSQL工具进行远程访问

文章目录 前言1. 数据库搭建2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射 3. 公网远程访问4. 配置固定TCP端口地址4.1 保留一个固定的公网TCP端口地址4.2 配置固定公网TCP端口地址4.3 测试使用固定TCP端口地址远程Oracle 前言 Oracle&#xff0c;是甲骨文公司的一款关系…