功能说明

lsof 全名为list open files,也就是列举系统中已经被打开的文件,通过lsof命令,就可以根据文件找到对应的进程信息,也可以根据进程信息找到进程打开的文件。

【语法格式】

lsof    [option]
lsof    [选项]
参数选项         解释说明
-c<进程名>     显示指定的进程名所打开的文件
-p<进程号>     显示指定的进程号所打开的文件
-i            通过监听指定的协议、端-和主机等信息,显示符合条件的进程信息
-u            显示指定用户使用的文件
-U            显示所有socket文件
 

范例11-1:显示使用文件的进程。

[root@lewen ~]# lsof /var/log/messages
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
abrt-watc root 4r REG , /var/log/messages
rsyslogd root 6w REG , /var/log/messages 如果想知道某个特定的文件是由哪个进程在使用,就可以通过“lsof文件名”的方式
来得到。从上面的输出可以得知,/var/log/messages文件是由rsyslogd进程在使用。
输出中每列的含义具体如下。
-COMMAND:命令,进程的名称。
-PID:进程号。
-USER:进程的所有者。
-FD:文件描述符,它又包含如下内容。
  0:表示标准输出。
  :表示标准输入。
  :表示标准错误。
  u:表示该文件被打开并处于读取/写人模式。
  r:表示该文件被打开并处于只读模式。
  w:表示该文件被打开并处于写人模式。
-TYPE:文件类型,REG(regular)为普通文件。
-DEVICE:指定磁盘的名称。
-SIZE/OFF:文件的大小。
-NODE:索引节点。
-NAME:文件名称。

范例11-2:显示指定进程所打开的文件。

[root@lewen ~]# lsof -c rsyslog
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsyslogd root cwd DIR , /
rsyslogd root rtd DIR , /
rsyslogd root txt REG , /usr/sbin/rsyslogd
...

范例11-3:显示指定进程号所打开的文件。

[root@lewen ~]# lsof -p
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsyslogd root cwd DIR , /
rsyslogd root rtd DIR , /
rsyslogd root txt REG , /usr/sbin/rsyslogd
...

范例11-4:监听指定的协议、端口和主机等信息,显示符合条件的进程信息。

在讲解范例之前,我们先来看看相应的语法格式:
lsof -i [46] [protocol][@8hostname][:service|port]
 
其中各项的含义如下。
  • 46:4代表IPv4,6代表IPv6。
  • protocol:传输协议,可以是TCP或UDP。
  • hostname:主机名称或者IP地址。
  • service:进程的服务名,例如NFS、SSH和FTP等。
  • port:系统中与服务对应的端口号。例如HTTP服务默认对应的端口号为80,SS日服务默认对应的端口号为22。了解了语法格式之后,再来看看范例的解答。
[root@lewen ~]# lsof -i #<=查看所有进程。
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd root 3u IPv4 0t0 TCP *:ssh (LISTEN)
sshd root 4u IPv6 0t0 TCP *:ssh (LISTEN)
master root 13u IPv4 0t0 TCP localhost:smtp (LISTEN)
master root 14u IPv6 0t0 TCP localhost:smtp (LISTEN)
sshd root 3u IPv4 0t0 TCP k8s-node1:ssh->10.0.0.1: (ESTABLISHED) [root@lewen ~]# lsof -i tcp # <=显示所有tcp网培连接的进程信息
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd root 3u IPv4 0t0 TCP *:ssh (LISTEN)
sshd root 4u IPv6 0t0 TCP *:ssh (LISTEN)
master root 13u IPv4 0t0 TCP localhost:smtp (LISTEN)
master root 14u IPv6 0t0 TCP localhost:smtp (LISTEN)
sshd root 3u IPv4 0t0 TCP k8s-node1:ssh->10.0.0.1: (ESTABLISHED) [root@lewen ~]# lsof -i : #<=显示端口为22的进程,这条命今很常用
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd root 3u IPv4 0t0 TCP *:ssh (LISTEN)
sshd root 4u IPv6 0t0 TCP *:ssh (LISTEN)
sshd root 3u IPv4 0t0 TCP k8s-node1:ssh->10.0.0.1: (ESTABLISHED) [root@lewen ~]# lsof -i tcp: #<==星示同时满足TCP和端口为22的进程。
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd root 3u IPv4 0t0 TCP *:ssh (LISTEN)
sshd root 4u IPv6 0t0 TCP *:ssh (LISTEN)
sshd root 3u IPv4 0t0 TCP k8s-node1:ssh->10.0.0.1: (ESTABLISHED)

范例11-5:显示指定用户使用的文件。

[lewen@k8s-node1 ~]$ lsof -u lewen
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash lewen cwd DIR , /home/lewen
bash lewen rtd DIR , /
bash lewen txt REG , /usr/bin/bash
bash lewen mem REG , /usr/lib64/libnss_files-2.17.so
bash lewen mem REG , /usr/lib/locale/locale-archive
bash lewen mem REG , /usr/lib64/libc-2.17.so
bash lewen mem REG , /usr/lib64/libdl-2.17.so

范例11-6:显示所有socket文件。

[root@k8s-node1 ~]# lsof -U
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd root 12u unix 0xffff964f7656e800 0t0 /run/systemd/private
systemd root 22u unix 0xffff964f7656fc00 0t0 /run/lvm/lvmpolld.socket
systemd root 23u unix 0xffff9650714f8400 0t0 /run/systemd/notify
systemd root 24u unix 0xffff9650714f8000 0t0 /run/systemd/cgroups-agent

s11.1 lsof:查看进程打开的文件的更多相关文章

  1. Linux 系统管理命令 - lsof - 查看进程打开的文件

    命令详解 重要星级: ★★★★★ 功能说明: 全名为 list open files,也就是列举系统中已经被打开的文件,通过 lsof 命令,就可以根据文件找到对应的进程信息,也可以根据进程信息找到进 ...

  2. linux命令 — lsof 查看进程打开那些文件 或者 查看文件给那个进程使用

    lsof命令是什么? 可以列出被进程所打开的文件的信息.被打开的文件可以是 1.普通的文件,2.目录  3.网络文件系统的文件,4.字符设备文件  5.(函数)共享库  6.管道,命名管道 7.符号链 ...

  3. linux lsof 查看进程打开那些文件 或者 查看文件给那个进程使用

    lsof命令是什么? 可以列出被进程所打开的文件的信息.被打开的文件可以是 1.普通的文件,2.目录  3.网络文件系统的文件,4.字符设备文件  5.(函数)共享库  6.管道,命名管道 7.符号链 ...

  4. lsof查看进程打开了哪些文件目录套接字

    lsof查看进程打开了哪些文件目录套接字

  5. lsof恢复进程打开的文件

    工作原理:进程每打开文件都会生成一个文件句柄FD来标识一个文件,进程打开的文件如果没有被释放,可以通过文件句柄FD来恢复删除的文件 注意:适合恢复进程一直在打开一个文件,例如日志文件,如果配置文件进程 ...

  6. lsof 查看打开了一个文件的有哪些进程 统计那个进程打开的文件最多

    lsof | grep /lib64/libc-2.12.so | wc   == 查看打开了一个文件的有哪些进程 lsof | awk '{print $2,$1}' | sort | uniq - ...

  7. ARTS-S linux查看进程打开的文件数

    当怀疑进程打开文件没有关闭时,可以反复执行以下命令,查看进程打开的文件数是否会不断增加. ls -l /proc/18707/fd | wc -l 其中18707是进程id

  8. Linux 利用进程打开的文件描述符(/proc)恢复被误删文件

    Linux 利用进程打开的文件描述符(/proc)恢复被误删文件 在 windows 上删除文件时,如果文件还在使用中,会提示一个错误:但是在 linux 上删除文件时,无论文件是否在使用中,甚至是还 ...

  9. Linux下查看进程打开的文件句柄数和如何修改

    修改文件句柄数在Linux下,我们使用ulimit -n 命令可以看到单个进程能够打开的最大文件句柄数量(socket连接也算在里面).系统默认值1024. 对于一般的应用来说(象Apache.系统进 ...

随机推荐

  1. Linux日志文件分割

    经常有这样的情况,日志文件或者数据文件会变得很庞大,那么每次对这些目标文件的访问或者修改就会变得极其耗时.因而引发一些性能问题,但是如果对这些目标文件进行分割,限定其大小,那么每次的访问或者修改就会变 ...

  2. DataInputStream FileInputStream 区别

    DataInputStream是数据输入流,读取的是java的基本数据类型. FileInputStream是从文件系统中,读取的单位是字节. FileReader 是从文件中,读取的单位是字符

  3. 小程序 picker 多列选择器 数据动态获取

    需求是将各校区对应各班级的数据 以两列选择器的方式展示出来,并且可以在选择完成之后记录选结果参数. 校区数据 和 班级数据 分别是两个接口,以 校区 teach_area_id 字段关联 其各班级数据 ...

  4. InertialNav

    https://github.com/priseborough/InertialNav Instructions To Run Simulink Model Note : Simulink model ...

  5. VS新建API控制器时提示“运行所选代码生成器时出错”

    使用Nuget安装microsoft.entityframeworkcore.tools这个包就行了,安装时注意版本. 根据下图提示应该是新建控制器时用到了这个包,所以安装一下就好了.之前遇到过一次, ...

  6. 9.13 h5日记

    9.13 面试题 为什么两个P出此案的效果不同,原因是 浏览器在解析第二个P的时候,因为字母没有空格,浏览器会认为这个单词没有打完,所以不会换行. 列表 ul ol dl li 1.无序列表 ul ( ...

  7. js 箭头函数

    箭头函数 ES6标准新增了一种新的函数:Arrow Function(箭头函数). x => x * x相当于: function (x) { return x * x; }箭头函数相当于匿名函 ...

  8. GM Tech 2 works with Hummer Yes or No

    This is about GM Tech 2 scan tool for Hummer troubleshooting and programming. Can I have a cheap Tec ...

  9. 20172306《Java程序设计与数据结构》第九周学习总结

    20172306<Java程序设计>第九周学习总结 教材学习内容总结 第十一章: try-catch语句.其中还有finally语句.try是进行某些操作,catch是捕获异常,并通过某些 ...

  10. read temperature

    button1, button2, richtexbox1, serialport1, using System;using System.Collections.Generic;using Syst ...