返回顶部
首页 > 资讯 > 操作系统 >Linux基础命令-lsof查看进程打开的文件
  • 390
分享到

Linux基础命令-lsof查看进程打开的文件

linux运维服务器 2023-09-06 21:09:51 390人浏览 独家记忆
摘要

Linux基础命令-uptime查看系统负载 Linux基础命令-top实时显示系统状态 Linux基础命令-ps查看进程状态 文件目录 前言 一 命令的介绍 二 语法及参数 2.1 使用help查看命令的语法信息 2.2 常用参

Linux基础命令-uptime查看系统负载

Linux基础命令-top实时显示系统状态

Linux基础命令-ps查看进程状态

文件目录

前言

一 命令的介绍

二 语法及参数

2.1 使用help查看命令的语法信息

2.2 常用参数

2.2.lsof命令-i参数的条件

三 命令显示内容的含义

3.1 FD 文件描述符的类型

3.2 文件描述符后内容的含义

3.3 TYPE的文件类型

四 参考实例

3.1列出文件存在的进程

3.2 列出指定进程打开的文件

3.3 列出指定端口号进程

3.4 列出占用文件号的进程

3.5 列出指定进程号打开的文件

3.6 列出指定UID号的进程详情

3.7 列出目录下打开的文件

3.8 列出递归目录下打开的文件

3.9 显示帮助信息

3.10 使用lsof恢复被删除的文件

总结

前言

        lsof命令是个比较常用到的系统监控命令,不管是用来查看文件的进程,或者是查看进程打开的文件都是能很好用的一个工具,那么一起来学习一下。

一 命令的介绍

        lsof命令来自于英文词组“list opened files”的缩写,主要功能是用来查看文件的进程信息,此命令能够能好的帮助用户了解相关服务的运行状态,是个非常不错的系统监控工具。

        小提示:只有root用户可以使用这个命令或获取超级权限的普通用户才能使用。

二 语法及参数

2.1 使用help查看命令的语法信息

NAME       lsof - list open filesSYNOPSIS       lsof [ -?abChlnNOPRtUvVX ] [ -A A ] [ -c c ] [ +c c ] [ +|-d d ] [ +|-D       D ] [ +|-e s ] [ +|-f [cfgGn] ] [ -F [f] ] [ -g [s] ] [ -i [i] ] [ -k k       ]  [ -K k ] [ +|-L [l] ] [ +|-m m ] [ +|-M ] [ -o [o] ] [ -p s ] [ +|-r       [t[m]] ] [ -s [p:s] ] [ -S [t] ] [ -T [t] ] [ -u s ] [ +|-w ] [ -x       [fl] ] [ -z [z] ] [ -Z [Z] ] [ -- ] [names]

语法:lsof 【参数】

2.2 常用参数

-a列出打开(二进制文件)存在的进程
-c<进程名>列出指定进程所打开的文件
-g列出GID号 进程的详情
-d<文件号>列出占用该文件号(FD)的进程
+d<目录>列出目录下打开的文件
+D<目录>递归列出目录下打开的文件
-n<目录>列出使用NFS的文件
-i <条件>列出符合条件的进程
-p<进程号>列出指定进程号所打开的文件
-u列出UID号进程详情
-h显示帮助信息
-v显示版本信息

2.2.lsof命令-i参数的条件

  • 协议              例如: lsof -i tcp
  • :端口             例如: lsof -i :22
  • @+IP            例如:lsof -i  @192.168.2.166
  • IPv4              例如:  lsof -i 4
  • IPv6              例如: lsof -i 6

三 命令显示内容的含义

lsof显示打开的文件及其其它内容解读

图上对应的内容以表格形式展现: 

状态栏含义
COMMAND进程的名称
PID进程的标识符号
USER进程的所有者
FD文件描述符
TYPE文件类型
DEVICE指定磁盘的名称
SIZE/OFF文件的大小
node文件的索引
NAME打开文件的位置

3.1 FD 文件描述符的类型

  • cwd         表示应用程序当前的工作目录
  • txt            表示它是一个可执行程序
  • mem        指的是内存的映射文件
  • 0              表示标准输出
  • 1              表示标准输入
  • 2              标准错误
  • Lnn          库引用
  • err           监狱目录(FreeBSD)
  • ltx            共享库文本(代码和数据)
  • Mxx         十六进制内存映射类型
  • m86         DOS合并映射文件
  • mmap     内存映射设备
  • pd            父目录
  • rtd            根目录
  • tr              内核跟踪文件
  • v86           VP/ix映射文件

3.2 文件描述符后内容的含义

  •  r : 表示打开文件为只读模式
  • w : 表示打开文件为写入模式
  • u :  表示打开文件是可读可写模式
  •  - :  表示当前状态被
  • 空格:表示当前状态未被锁定

3.3 TYPE的文件类型

  • DIR:表示目录类型
  • CHR:表示字符类型
  • BLK:表示设备类型
  • REG:表示注册表文件

四 参考实例

3.1列出文件存在的进程

[root@localhost ~]# lsof -a /usr/bin/vimCOMMAND   PID USER  FD   TYPE DEVICE SIZE/OFF      NODE NAMEvim     10065 root txt    REG  253,0  2337208 102492147 /usr/bin/vimvim     11403 host txt    REG  253,0  2337208 102492147 /usr/bin/vim

3.2 列出指定进程打开的文件

[root@localhost ~]# lsof -c systemd | headCOMMAND   PID USER   FD      TYPE             DEVICE SIZE/OFF       NODE NAMEsystemd     1 root  cwd       DIR              253,0      224         64 /systemd     1 root  rtd       DIR              253,0      224         64 /systemd     1 root  txt       REG              253,0  1632960       2630 /usr/lib/systemd/systemdsystemd     1 root  mem       REG              253,0    20064      78153 /usr/lib64/libuuid.so.1.3.0systemd     1 root  mem       REG              253,0   265576     222563 /usr/lib64/libblkid.so.1.1.0systemd     1 root  mem       REG              253,0    90248       1780 /usr/lib64/libz.so.1.2.7systemd     1 root  mem       REG              253,0   157424       1788 /usr/lib64/liblzma.so.5.2.2systemd     1 root  mem       REG              253,0    23968      78215 /usr/lib64/libcap-ng.so.0.0.0systemd     1 root  mem       REG              253,0    19896      78205 /usr/lib64/libattr.so.1.1.0

3.3 列出指定端口号进程

可以先用netstat查看服务,再用这个查看端口号进程。

[root@VM-12-17-Centos ~]# netstat -antup |grep Mysqltcp6       0      0 :::3306                 :::*                    LISTEN      3609/mysqld         [root@VM-12-17-centos ~]# lsof -i :3306COMMAND  PID  USER   FD   TYPE   DEVICE SIZE/OFF NODE NAMEmysqld  3609 mysql   29u  IPv6 62681253      0t0  TCP *:mysql (LISTEN)

3.4 列出占用文件号的进程

由于显示的内容实在太多,加上wc -l显示一共有多少行

[root@localhost ~]# lsof -d mem |wc -l7388

3.5 列出指定进程号打开的文件

若要查看进程号打开的文件信息,可以先用ps搜索指定的指令信息,复制进程号后到这里使用-p参数查看进程号存在的文件。

[root@localhost ~]# ps aux | grep vimroot      10065  0.0  0.1 149752  5448 pts/2    S+   19:19   0:00 vim a.shhost      11403  0.0  0.1 149568  5204 pts/3    S+   20:05   0:00 vim 1.txtroot      11642  0.0  0.0 112824   968 pts/1    R+   20:15   0:00 grep --color=auto vim[root@localhost ~]# lsof -p 10065 COMMAND   PID USER   FD   TYPE DEVICE  SIZE/OFF      NODE NAMEvim     10065 root  cwd    DIR  253,0      4096  67144897 /rootvim     10065 root  rtd    DIR  253,0       224        64 /vim     10065 root  txt    REG  253,0   2337208 102492147 /usr/bin/vim

3.6 列出指定UID号的进程详情

lsof -u参数后接UID号和用户名都是显示一样的内容。

[root@localhost ~]# lsof -u 1000COMMAND   PID USER   FD   TYPE DEVICE  SIZE/OFF      NODE NAMEbash    11312 host  cwd    DIR  253,0       145 101340405 /home/hostbash    11312 host  rtd    DIR  253,0       224        64 /bash    11312 host  txt    REG  253,0    964536 100664820 /usr/bin/bash
[root@localhost ~]# lsof -u hostCOMMAND   PID USER   FD   TYPE DEVICE  SIZE/OFF      NODE NAMEbash    11312 host  cwd    DIR  253,0       145 101340405 /home/hostbash    11312 host  rtd    DIR  253,0       224        64 /

3.7 列出目录下打开的文件

[root@localhost ~]# lsof +d /home/host COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF      NODE NAMEbash    11312 host  cwd    DIR  253,0      145 101340405 /home/hostvim     11403 host  cwd    DIR  253,0      145 101340405 /home/hostvim     11403 host    3u   REG  253,0    12288 101364386 /home/host/.1.txt.swp

3.8 列出递归目录下打开的文件

[root@localhost ~]# lsof +D /rootCOMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF      NODE NAMEgnome-ses  1945 root  cwd    DIR  253,0     4096  67144897 /rootdbus-laun  1954 root  cwd    DIR  253,0     4096  67144897 /rootdbus-daem  1955 root  cwd    DIR  253,0     4096  67144897 /rootimsetting  1984 root  cwd    DIR  253,0     4096  67144897 /root

3.9 显示帮助信息

[root@localhost ~]# lsof -hlsof 4.87 latest revision: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/ latest FAQ: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/FAQ latest man page: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/lsof_man usage: [-?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]] [-Z [Z]] [--] [names]

3.10 使用lsof恢复被删除的文件

此命令的恢复原理是当打开一个文件,这个文件就一直是打开状态的,并且有存在于磁盘、内存当中的;直接删除文件,但进程是还在持续运行中的,在这个过程中可以尝试使用文件描述符做文件的恢复。

思路步骤

  • 1)创建一个文件
  • 2)在另外一个窗口打开文件保持一直运行的状态
  • 3)删除这个运行的文件
  • 4)使用lsof进行恢复
#测试环境centos7.6[root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) [root@localhost ~]# mkdir test     #创建文件[root@localhost ~]# cd test[root@localhost test]# cp /etc/passwd ./#在另外一个窗口打开文件[root@localhost test]# vim passwd#原窗口继续 删除文件[root@localhost test]# rm -f passwd[root@localhost test]# lsof | grep passwd   #看到文件描述符为10r的信息cupsd      6758                 root   10r      REG              253,0      2576   17470125 /etc/passwdvim       13101                 root    4u      REG              253,0     12288   51866124 /root/test/.passwd.swp#在proc目录下查找PID 6758并且文件描述符为10的文件[root@localhost test]# head -5 /proc/6758/fd/10root:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologin#将文件导入一个新文件[root@localhost test]# cat !$ > passwd.txtcat /proc/6758/fd/10 > passwd.txt[root@localhost test]# wc -l < passwd.txt   #显示行数51 [root@localhost test]# md5sum /etc/passwd passwd.txt  #inode与源文件一致,恢复成功b1a03b88bac575860f616d09756f78d0  /etc/passwdb1a03b88bac575860f616d09756f78d0  passwd.txt

 在文件的进程还存在的情况下,文件恢复需要知道文件名或相关信息才有很大的把握可以进行恢复。

总结

        这个命令要记的参数是挺多的,用来监控进程打开的文件信息,亦可通过这个命令来了解相关服务的运行状态等,若觉得以上内容还不错的,可以点赞支持一下!

        

        

来源地址:https://blog.csdn.net/rhn_111/article/details/129145025

--结束END--

本文标题: Linux基础命令-lsof查看进程打开的文件

本文链接: https://lsjlt.com/news/397600.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Linux基础命令-lsof查看进程打开的文件
    Linux基础命令-uptime查看系统负载 Linux基础命令-top实时显示系统状态 Linux基础命令-ps查看进程状态 文件目录 前言 一 命令的介绍 二 语法及参数 2.1 使用help查看命令的语法信息 2.2 常用参...
    99+
    2023-09-06
    linux 运维 服务器
  • linux使用lsof命令查看文件打开情况
    前言 我们都知道,在linux下,“一切皆文件”,因此有时候查看文件的打开情况,就显得格外重要,而这里有一个命令能够在这件事上很好的帮助我们-它就是lsof。 linux下有哪些文件 在介绍lsof命令之前,先简单说...
    99+
    2022-06-04
    linux lsof命令 linux之lsof命令 linux查看文件打开
  • Linux基础命令-du查看文件的大小
    文章目录 du 命令介绍 语法格式 基本参数 参考实例 1)以人类可读形式显示指定的文件大小 2)显示当前目录下所有文件大小 3)只显示目录的大小 4)显示根下哪个目录文件最大 5)显示所有文件的大小 6)只显示目录下的文件,不显示目录下的...
    99+
    2023-10-24
    linux 运维 服务器
  • Linux基础命令---lpr打印文件
    lprlpr指令用来打印文件,如果没有指定文件名,那么从标准输入读取内容。CUPS提供了许多设置默认目标的方法。首先查询“LPDEST”和“PRINTER”环境变量。如果没有设置,则使用lpoptions(1)命令的当前默认集,然后使用lp...
    99+
    2023-06-05
  • Linux下Lsof命令的安装及基础操作
    这篇文章主要讲解了“Linux下Lsof命令的安装及基础操作”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux下Lsof命令的安装及基础操作”吧!安装lsof 命令默认是没有安装的,而...
    99+
    2023-06-15
  • Linux基础命令-tar打包压缩文件
    Linux基础命令-echo输出信息_Linux学习中的博客-CSDN博客 Linux三剑客-grep命令_Linux学习中的博客-CSDN博客 Linux文件管理命令(3)-mv改动文件_Linux学习中的博客-CSDN博客 文...
    99+
    2023-09-01
    linux 运维 服务器
  • Linux基础命令---检查密码文件pwck
    pwck检查用户密码文件“/etc/passwd”和“/etc/shadow”的完整性,将验证结果送到标砖输出。提示用户删除格式不正确或有其他不可更正错误的条目。检查以验证每个条目是否具有:正确的字段数、唯一有效的用户名、有效的用户和组标识...
    99+
    2023-06-05
  • 查看linux文件的命令详解
    怎么查看linux文件 查看文件内容的命令: cat 由第一行开始显示内容,并将所有内容输出 tac 从最后一行倒序显示内容,并将所有内容输出 more 根据窗口大小,一页一页的现实文件内容 less ...
    99+
    2022-06-04
    linux 查看文件
  • Linux基础命令-cp拷贝文件
    Linux文件管理命令(3)-mv改动文件_Linux学习中的博客-CSDN博客 Linux管理文件命令(2)rm命令-删除文件或者目录_Linux学习中的博客-CSDN博客 文章目录 前言 一、cp命令介绍 二、语法及常用参数 2...
    99+
    2023-09-24
    linux 运维 服务器
  • Linux ps命令详解,Linux查看进程
    「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 ps命令详解 一、常用操作1、查看所有进程(连带命令行)2、显示所有包含其他使用者的进程3、查看指定进程...
    99+
    2023-08-18
    linux 服务器 运维 网络安全
  • 【Linux查看进程和日志的命令】
    Linux 中可以使用以下命令来查看进程和日志: 1.查看进程命令: 可以使用 ps 和 top 命令来查看正在运行的进程,两者的区别在于 ps 命令是一次性显示所有进程信息,而 top 命令可以实时...
    99+
    2023-09-01
    linux 运维 服务器
  • CentOS怎么查看进程打开的文件或文件对应的进程
    这篇文章主要介绍“CentOS怎么查看进程打开的文件或文件对应的进程”,在日常操作中,相信很多人在CentOS怎么查看进程打开的文件或文件对应的进程问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”CentOS怎...
    99+
    2023-06-10
  • linux查看文件命令是什么
    这篇文章主要介绍“linux查看文件命令是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“linux查看文件命令是什么”文章能帮助大家解决问题。除vi的其他查看文件的命令:1、cat命令,可显示文...
    99+
    2023-07-02
  • Linux基础命令---验证组文件grpck
    grpckgrpck指令可以验证组文件“/etc/group”和“/etc/gshadow”的完整性。检查的内容包括:正确的字段数、唯一有效的组名称、有效的组标识符、成员和管理员的有效列表、“/etc/gshadow”文件中的相应条目。检查...
    99+
    2023-06-05
  • lsof 命令用法:查看已删除空间却没有释放的进程
    查看已经删除的文件,空间有没有释放,没有的话kill掉pidlsof -n |grep deletedlsof简介lsof(list open files)是一个列出当前系统打开文件的工具。问题描述:服务报...
    99+
    2024-04-02
  • Linux基础命令---ipcs显示进程通信
    ipcsipcs指令用来显示进程间通信状况。“-i”选项允许指定特定的资源id。将只打印有关此id的信息。此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、Fedora、SUSE、openSUSE。 1、语法i...
    99+
    2023-06-05
  • Linux查看文件大小的命令du命令是什么
    这篇文章主要讲解了“Linux查看文件大小的命令du命令是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux查看文件大小的命令du命令是什么”吧!Linux查看文件大小du命令显示...
    99+
    2023-06-16
  • 详解linux less命令查看大文件
    less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看,但...
    99+
    2022-06-04
    linux less 命令 linux 查看大文件
  • linux查看文件夹命令有哪些
    linux中查看文件夹的命令有:1.cat命令,连接文件并打印到标准输出设备上;2.more命令,将文件以一页一页的形式显示;3.head命令,显示指定文件的前若干行;4.tail命令,显示指定文件的末尾若干行;5.ls命令,列出目录文件;...
    99+
    2024-04-02
  • linux查看文件命令怎么使用
    Linux查看文件的命令主要有以下几个:1. cat命令:显示文件内容,命令格式为:cat [文件名]。2. more命令:逐页显示...
    99+
    2023-05-13
    linux查看文件命令 linux
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作