功能说明

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. Python: subprocess.Popen()不支持unicode问题解决

    起源: 所下载视频,有音视频分离者,需要合并起来,采用python之subprocess.Popen()调用ffmpeg实现.python版本为2.7.13,而音视频文件路径,有unicode字符者, ...

  2. 项目总结02:百度地图js 基本用法介绍

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  3. struct在C和C++中的使用总结

    主要理解一下两点: 1.在C和C++中struct的常规使用. 2.在C++中struct和class基本一致,除了在访问控制权限方面,即: 通过struct关键字实现的类,属性,函数默认的访问权限为 ...

  4. static 构造函数的认识

    最近,看到一道面试题,如下 class Class1 { ; static Class1() { count++; } public Class1() { count++; } } Class1 on ...

  5. Quartz代码及配置详解(转)

    Quartz可以用来做什么? Quartz是一个任务调度框架.比如你遇到这样的问题 想每月25号,信用卡自动还款 想每年4月1日自己给当年暗恋女神发一封匿名贺卡 想每隔1小时,备份一下自己的爱情动作片 ...

  6. position的absolute与fixed,absolute与relative共同点与不同点

    absolute与fixed 共同点: (1) 改变行内元素的呈现方式,display被置为block: (2) 让元素脱离普通流,不占据空间: (3) 默认会覆盖到非定位元素上 不同点: absol ...

  7. Gradle编译报错

    问题重现 gradle build A problem occurred evaluating root project 'Spring4WebSocket'. > Failed to appl ...

  8. vue2.0后台系统

    参考网址: http://www.cnblogs.com/linxin/p/6509897.html

  9. 序列化、模块 day21

      一 序列化 什么叫序列化——将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化. 字典示例 import json d={'a':1,'b':2} ret = json.dumps(d)# ...

  10. 可迭代对象(Iterable)和迭代器(Iterator)

     迭代是访问集合元素的一种方式. 迭代器是一个可以记住遍历的位置的对象. 迭代器对象从集合的第一 个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退. 1. 可迭代对象 以直接作用于 ...