Linux 命令:lsof(列出打开的文件)

1. 写在前面

本文主要介绍:Linux “lsof” 命令;

公众号: 滑翔的纸飞机

2. lsof 命令

lsof 命令是 “List Open Files(列出打开的文件)”的缩写,用于显示打开的文件以及使用这些文件的进程。

在 Linux 中,一切都以文件的形式存在。有时,特别是为了排除故障,我们需要知道当前哪些进程使用了哪些文件,还可以查看系统中某些网络连接打开的文件等。

root@dev:~# lsof | more
COMMAND PID TID TASKCMD USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root cwd DIR 252,1 4096 2 /
systemd 1 root rtd DIR 252,1 4096 2 /
systemd 1 root txt REG 252,1 1620224 73069 /usr/lib/systemd/systemd
systemd 1 root mem REG 252,1 1369384 4750 /usr/lib/x86_64-linux-gnu/libm-2.31.so
systemd 1 root mem REG 252,1 178528 2927 /usr/lib/x86_64-linux-gnu/libudev.so.1.6.17
systemd 1 root mem REG 252,1 1575112 4547 /usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0
systemd 1 root mem REG 252,1 137584 3750 /usr/lib/x86_64-linux-gnu/libgpg-error.so.0.28.0
systemd 1 root mem REG 252,1 67912 4571 /usr/lib/x86_64-linux-gnu/libjson-c.so.4.0.0

接下去,让我们来看看 lsof 命令的一些重要选项。

2.1 按用户名过滤打开的文件夹

按用户名过滤打开的文件:

root@dev:~# lsof -u root
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 23028 bolean cwd DIR 252,1 4096 2 /
systemd 23028 bolean rtd DIR 252,1 4096 2 /
systemd 23028 bolean txt REG 252,1 1620224 73069 /usr/lib/systemd/systemd
systemd 23028 bolean mem REG 252,1 1369384 4750 /usr/lib/x86_64-linux-gnu/libm-2.31.so
systemd 23028 bolean mem REG 252,1 178528 2927 /usr/lib/x86_64-linux-gnu/libudev.so.1.6.17
systemd 23028 bolean mem REG 252,1 1575112 4547 /usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0
systemd 23028 bolean mem REG 252,1 137584 3750 /usr/lib/x86_64-linux-gnu/libgpg-error.so.0.28.0
systemd 23028 bolean mem REG 252,1 67912 4571 /usr/lib/x86_64-linux-gnu/libjson-c.so.4.0.0
systemd 23028 bolean mem REG 252,1 34872 3489 /usr/lib/x86_64-linux-gnu/libargon2.so.1
systemd 23028 bolean mem REG 252,1 431472 7146 /usr/lib/x86_64-linux-gnu/libdevmapper.so.1.02.1

除特定用户名外过滤打开的文件(反向):

root@dev:~# lsof -u ^root
COMMAND PID TID TASKCMD USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root cwd DIR 252,1 4096 2 /
systemd 1 root rtd DIR 252,1 4096 2 /
systemd 1 root txt REG 252,1 1620224 73069 /usr/lib/systemd/systemd
systemd 1 root mem REG 252,1 1369384 4750 /usr/lib/x86_64-linux-gnu/libm-2.31.so
systemd 1 root mem REG 252,1 178528 2927 /usr/lib/x86_64-linux-gnu/libudev.so.1.6.17
systemd 1 root mem REG 252,1 1575112 4547 /usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0
systemd 1 root mem REG 252,1 137584 3750 /usr/lib/x86_64-linux-gnu/libgpg-error.so.0.28.0
systemd 1 root mem REG 252,1 67912 4571 /usr/lib/x86_64-linux-gnu/libjson-c.so.4.0.0

2.2 按特定进程过滤打开的文件

按特定进程过滤打开的文件:

root@dev:~# lsof -c containerd
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
container 713 root cwd DIR 252,1 4096 2 /
container 713 root rtd DIR 252,1 4096 2 /
container 713 root txt REG 252,1 52007976 3761 /usr/bin/containerd
container 713 root mem-W REG 252,1 2097152 516163 /var/lib/containerd/io.containerd.metadata.v1.bolt/meta.db
container 713 root mem REG 252,1 2029592 4745 /usr/lib/x86_64-linux-gnu/libc-2.31.so
container 713 root mem REG 252,1 157224 4761 /usr/lib/x86_64-linux-gnu/libpthread-2.31.so

2.3 根据进程 ID 过滤打开的文件

根据进程 ID 过滤打开的文件:

root@dev:~# lsof -p 713
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
container 713 root cwd DIR 252,1 4096 2 /
container 713 root rtd DIR 252,1 4096 2 /
container 713 root txt REG 252,1 52007976 3761 /usr/bin/containerd
container 713 root mem-W REG 252,1 2097152 516163 /var/lib/containerd/io.containerd.metadata.v1.bolt/meta.db

2.4 按目录过滤打开的文件

按目录过滤打开的文件: 

root@dev:~# lsof +D /usr/bin
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
dbus-daem 688 messagebus txt REG 252,1 249032 1680 /usr/bin/dbus-daemon
networkd- 695 root txt REG 252,1 5494584 2969 /usr/bin/python3.8
container 713 root txt REG 252,1 52007976 3761 /usr/bin/containerd

2.5 按网络连接过滤打开的文件

按网络连接过滤打开的文件:

root@dev:~# lsof -i 
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd-n 630 systemd-network 17u IPv4 29112968 0t0 UDP redis:bootpc
systemd-r 634 systemd-resolve 12u IPv4 20104 0t0 UDP localhost:domain
systemd-r 634 systemd-resolve 13u IPv4 20105 0t0 TCP localhost:domain (LISTEN)
sshd 756 root 3u IPv4 22042 0t0 TCP *:ssh (LISTEN)

2.6 按端口过滤打开的文件

按端口过滤打开的文件:

root@dev:~# lsof -i :22
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 756 root 3u IPv4 22042 0t0 TCP *:ssh (LISTEN)
sshd 756 root 4u IPv6 23092 0t0 TCP *:ssh (LISTEN)
sshd 1251251 root 4u IPv4 30406337 0t0 TCP redis:ssh->10.20.0.6:52875 (ESTABLISHED)
sshd 1277315 root 4u IPv4 30561119 0t0 TCP redis:ssh->10.20.0.6:53199 (ESTABLISHED)

2.7 按协议过滤打开的文件

按协议过滤打开的文件:

root@dev:~# lsof -i TCP
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd-r 634 systemd-resolve 13u IPv4 20105 0t0 TCP localhost:domain (LISTEN)
sshd 756 root 3u IPv4 22042 0t0 TCP *:ssh (LISTEN)
sshd 756 root 4u IPv6 23092 0t0 TCP *:ssh (LISTEN)

感谢您花时间阅读文章

收藏本站不迷路

/////往期精彩/////

Linux:系统调用 和 Strace
Linux 命令:PS(进程状态)
Python 并发:全局解释器锁(GIL)及其对多线程的影响

原文始发于微信公众号(滑翔的纸飞机):Linux 命令:lsof(列出打开的文件)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/260991.html

(0)
土豆大侠的头像土豆大侠

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!