欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

s11.1 lsof:查看进程打开的文件

发布时间:2024/9/3 编程问答 45 豆豆
生活随笔 收集整理的这篇文章主要介绍了 s11.1 lsof:查看进程打开的文件 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

功能说明

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 8718 root 4r REG 253,0 404668 522404 /var/log/messages rsyslogd 10046 root 6w REG 253,0 404668 522404 /var/log/messages如果想知道某个特定的文件是由哪个进程在使用,就可以通过“lsof文件名”的方式 来得到。从上面的输出可以得知,/var/log/messages文件是由rsyslogd进程在使用。 输出中每列的含义具体如下。 -COMMAND:命令,进程的名称。 -PID:进程号。 -USER:进程的所有者。 -FD:文件描述符,它又包含如下内容。0:表示标准输出。1:表示标准输入。2:表示标准错误。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 10046 root cwd DIR 253,0 224 64 / rsyslogd 10046 root rtd DIR 253,0 224 64 / rsyslogd 10046 root txt REG 253,0 664080 522402 /usr/sbin/rsyslogd ...

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

[root@lewen ~]# lsof -p 10046 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME rsyslogd 10046 root cwd DIR 253,0 224 64 / rsyslogd 10046 root rtd DIR 253,0 224 64 / rsyslogd 10046 root txt REG 253,0 664080 522402 /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 10044 root 3u IPv4 49337 0t0 TCP *:ssh (LISTEN) sshd 10044 root 4u IPv6 49346 0t0 TCP *:ssh (LISTEN) master 10215 root 13u IPv4 50008 0t0 TCP localhost:smtp (LISTEN) master 10215 root 14u IPv6 50009 0t0 TCP localhost:smtp (LISTEN) sshd 10805 root 3u IPv4 52326 0t0 TCP k8s-node1:ssh->10.0.0.1:10662 (ESTABLISHED)[root@lewen ~]# lsof -i tcp # <=显示所有tcp网培连接的进程信息 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 10044 root 3u IPv4 49337 0t0 TCP *:ssh (LISTEN) sshd 10044 root 4u IPv6 49346 0t0 TCP *:ssh (LISTEN) master 10215 root 13u IPv4 50008 0t0 TCP localhost:smtp (LISTEN) master 10215 root 14u IPv6 50009 0t0 TCP localhost:smtp (LISTEN) sshd 10805 root 3u IPv4 52326 0t0 TCP k8s-node1:ssh->10.0.0.1:10662 (ESTABLISHED)[root@lewen ~]# lsof -i :22 #<=显示端口为22的进程,这条命今很常用 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 10044 root 3u IPv4 49337 0t0 TCP *:ssh (LISTEN) sshd 10044 root 4u IPv6 49346 0t0 TCP *:ssh (LISTEN) sshd 10805 root 3u IPv4 52326 0t0 TCP k8s-node1:ssh->10.0.0.1:10662 (ESTABLISHED)[root@lewen ~]# lsof -i tcp:22 #<==星示同时满足TCP和端口为22的进程。 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 10044 root 3u IPv4 49337 0t0 TCP *:ssh (LISTEN) sshd 10044 root 4u IPv6 49346 0t0 TCP *:ssh (LISTEN) sshd 10805 root 3u IPv4 52326 0t0 TCP k8s-node1:ssh->10.0.0.1:10662 (ESTABLISHED)

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

[lewen@k8s-node1 ~]$ lsof -u lewen COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME bash 11081 lewen cwd DIR 253,0 62 33997200 /home/lewen bash 11081 lewen rtd DIR 253,0 224 64 / bash 11081 lewen txt REG 253,0 964608 50333656 /usr/bin/bash bash 11081 lewen mem REG 253,0 61624 34664 /usr/lib64/libnss_files-2.17.so bash 11081 lewen mem REG 253,0 106075056 50334298 /usr/lib/locale/locale-archive bash 11081 lewen mem REG 253,0 2151672 34646 /usr/lib64/libc-2.17.so bash 11081 lewen mem REG 253,0 19288 34652 /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 1 root 12u unix 0xffff964f7656e800 0t0 25117 /run/systemd/private systemd 1 root 22u unix 0xffff964f7656fc00 0t0 25169 /run/lvm/lvmpolld.socket systemd 1 root 23u unix 0xffff9650714f8400 0t0 8992 /run/systemd/notify systemd 1 root 24u unix 0xffff9650714f8000 0t0 8994 /run/systemd/cgroups-agent

总结

以上是生活随笔为你收集整理的s11.1 lsof:查看进程打开的文件的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。