功能说明

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 进程】fork父子进程间共享数据分析

    之前我们通过fork()函数,得知了父子进程之间的存在着代码的拷贝,且父子进程都相互独立执行,那么父子进程是否共享同一段数据,即是否存在着数据共享.接下来我们就来分析分析父子进程是否存在着数据共享. ...

  2. java中钩子方法的概念

    钩子方法源于设计模式中模板方法(Template Method)模式,模板方法模式的概念为:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以在不改变算法结构的情况下,重新 ...

  3. 当前的开源SLAM方案

    开源方案 传感器形式 地址链接 MonoSLAM 单目 https://github.com/hanmekim/SceneLib2  PTAM 单目  http://www.robots.ox.ac. ...

  4. 1.git使用入门之基本的更新提交操作

    在项目开发中使用git的规范,避免因为不规范的操作带来额外的工作量 更行代码 git pull 提交代码 .查看状态 git status .添加到本地缓存 git add .(所有,也可以单个添加) ...

  5. 面向服务的架构(SOA)演变图片

    公司项目演变 成熟的公司项目结构 对比 总线-服务的注册与发现

  6. Gulp应用场景

    转自:Gulp教程之:Gulp能做什么,前端装逼为何要用它 我们先说说 平时web开发遇到的一些场景 和 苦恼无奈的情况:   JavaScript和CSS的版本问题 我们都知道 JavaScript ...

  7. Nginx 的 docker 部署

    1.输入命令 docker pull nginx:1.15 拉取 nginx 的镜像: 2.使用 docker images 查看拉取到的镜像信息: 3.在主机上创建用于映射的目录 mkdir -p ...

  8. 转~Jenkins pipeline:pipeline 使用之语法详解

    一.引言 Jenkins 2.0的到来,pipline进入了视野,jenkins2.0的核心特性. 也是最适合持续交付的feature. 简单的来说,就是把Jenkins1.0版本中,Project中 ...

  9. POJ1966 Cable TV Network

    原题链接 割去点使得无向图不连通,和最小割相似. 我们可以将点转化成边,这样就能跑最小割了. 枚举每两个不能直接到达的点\(S,T\),使得删去一些点(除去这两个点)使得这两个点不连通(若两点能直接到 ...

  10. Java时代即将来临

    Java语言开发成型的时候有一个构想:就是智能设备互联,笔者推断这个时代即将来临. 我们看看信息时代经历的几个阶段: 机械设备阶段--以算盘.机械式计算机为代表的萌芽阶段. 电子管计算机阶段--以简单 ...