Linux 命令 | 常用命令 lsof 详解 + 实例
目录
一、基本概念
二、常用参数
三、实例
3.1 无参数
3.2 -p 参数
3.3 -l 参数
3.4 -u 参数
3.5 -c 参数
3.6 -d 参数
3.7 fileName
3.8 -i 参数
四、总结
五、参考文献
lsof 命令常用于查找进程打开了哪些文件以及与打开文件相关联的内容,这篇文章将介绍 lsof 常用的命令参数,下面通过实例进行说明。
一、基本概念
命令 lsof ( list opened files )负责列出系统中已经打开的文件,包括普通文件,目录,块特殊文件,字符特殊文件,正在执行的文本引用,库,流或网络文件(例如:网络套接字,NFS文件或UNIX域套接字)。
二、常用参数
-p pid : 输出指定进程打开的文件;
-l : 输出中使用ID代替用户名;
-u userName : 输出指定用户打开的文件;
-c string : 输出 COMMAND 列中包含 string 的项;
-d fd : 输出包含指定描述符的项;
fileName : 输出打开文件 fileName 的所有项;
-i [46] [protocol][@hostname|hostaddr][:service|port] : 输出符合指定条件的项,其中:
46 :分别指 IPv4、IPv6;
protocol :指 TCP 或 UDP;
hostname : 网络主机名;
hostaddr : IP 地址;
service : 包含在 /etc/services 中的名称;
port : 端口号,可以是多个;
三、实例
3.1 无参数
在终端中直接执行 lsof 命令,如下所示:
[root@localhost ~]# lsof
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfsOutput information may be incomplete.
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root cwd DIR 253,0 236 64 /
systemd 1 root rtd DIR 253,0 236 64 /
systemd 1 root txt REG 253,0 1616360 67485964 /usr/lib/systemd/systemd
systemd 1 root mem REG 253,0 20112 33750391 /usr/lib64/libuuid.so.1.3.0
systemd 1 root mem REG 253,0 265624 33750457 /usr/lib64/libblkid.so.1.1.0
systemd 1 root mem REG 253,0 90248 33628492 /usr/lib64/libz.so.1.2.7
systemd 1 root mem REG 253,0 157424 33750414 /usr/lib64/liblzma.so.5.2.2
systemd 1 root mem REG 253,0 23968 33750402 /usr/lib64/libcap-ng.so.0.0.0
systemd 1 root mem REG 253,0 19896 33750102 /usr/lib64/libattr.so.1.1.0
systemd 1 root mem REG 253,0 19248 33591164 /usr/lib64/libdl-2.17.so
systemd 1 root mem REG 253,0 402384 33750139 /usr/lib64/libpcre.so.1.2.0
……
……
其中,每列参数的含义如下:
1. COMMAND : 命令名称;
2. PID : 进程ID;
3. TID : 线程ID,如果为空代表列出的是进程;
4. TASKCMD : 任务名称,通常与 COMMAND 相同;
5. USER : 用户ID号或登录名;
6. FD : 文件描述符;
7. TYPE : 与文件关联结点的类型;
8. DEVICE : 设备号;
9. SIZE/OFF : 文件大小/偏移量,以字节为单位;
10. NODE : 文件结点;
11. NAME : 文件挂载点和文件所在的系统;
3.2 -p 参数
执行命令 lsof -p 1,列出 1号 进程打开的文件,如下所示:
[root@localhost ~]# lsof -p 1
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfsOutput information may be incomplete.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root cwd DIR 253,0 236 64 /
systemd 1 root rtd DIR 253,0 236 64 /
systemd 1 root txt REG 253,0 1616360 67485964 /usr/lib/systemd/systemd
systemd 1 root mem REG 253,0 20112 33750391 /usr/lib64/libuuid.so.1.3.0
systemd 1 root mem REG 253,0 265624 33750457 /usr/lib64/libblkid.so.1.1.0
systemd 1 root mem REG 253,0 90248 33628492 /usr/lib64/libz.so.1.2.7
systemd 1 root mem REG 253,0 157424 33750414 /usr/lib64/liblzma.so.5.2.2
systemd 1 root mem REG 253,0 23968 33750402 /usr/lib64/libcap-ng.so.0.0.0
systemd 1 root mem REG 253,0 19896 33750102 /usr/lib64/libattr.so.1.1.0
systemd 1 root mem REG 253,0 19248 33591164 /usr/lib64/libdl-2.17.so
systemd 1 root mem REG 253,0 402384 33750139 /usr/lib64/libpcre.so.1.2.0
systemd 1 root mem REG 253,0 2156272 33591158 /usr/lib64/libc-2.17.so
systemd 1 root mem REG 253,0 142144 33623171 /usr/lib64/libpthread-2.17.so
systemd 1 root mem REG 253,0 88720 33591127 /usr/lib64/libgcc_s-4.8.5-20150702.so.1
systemd 1 root mem REG 253,0 43712 33623176 /usr/lib64/librt-2.17.so
……
3.3 -l 参数
执行命令 lsof -l ,输出中使用用户 ID 代替用户名,如下所示:
[root@localhost ~]# lsof -l
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfsOutput information may be incomplete.
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 0 cwd DIR 253,0 236 64 /
systemd 1 0 rtd DIR 253,0 236 64 /
systemd 1 0 txt REG 253,0 1616360 67485964 /usr/lib/systemd/systemd
systemd 1 0 mem REG 253,0 20112 33750391 /usr/lib64/libuuid.so.1.3.0
systemd 1 0 mem REG 253,0 265624 33750457 /usr/lib64/libblkid.so.1.1.0
systemd 1 0 mem REG 253,0 90248 33628492 /usr/lib64/libz.so.1.2.7
……
例子中,USER 列显示的是用户ID而不是用户名。
3.4 -u 参数
执行命令 lsof -u root,输出 root 用户打开的文件,如下所示:
[root@localhost ~]# lsof -u root
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfsOutput information may be incomplete.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root cwd DIR 253,0 236 64 /
systemd 1 root rtd DIR 253,0 236 64 /
systemd 1 root txt REG 253,0 1616360 67485964 /usr/lib/systemd/systemd
systemd 1 root mem REG 253,0 20112 33750391 /usr/lib64/libuuid.so.1.3.0
systemd 1 root mem REG 253,0 265624 33750457 /usr/lib64/libblkid.so.1.1.0
systemd 1 root mem REG 253,0 90248 33628492 /usr/lib64/libz.so.1.2.7
……
3.5 -c 参数
执行命令 lsof -c sshd,输出 COMMAND 列包含 sshd 的项,如下所示:
[root@localhost ~]# lsof -c sshd
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfsOutput information may be incomplete.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 9237 root cwd DIR 253,0 236 64 /
sshd 9237 root rtd DIR 253,0 236 64 /
sshd 9237 root txt REG 253,0 853040 35966750 /usr/sbin/sshd
sshd 9237 root mem REG 253,0 61560 33617054 /usr/lib64/libnss_files-2.17.so
sshd 9237 root mem REG 253,0 68192 33750408 /usr/lib64/libbz2.so.1.0.6
sshd 9237 root mem REG 253,0 100008 33750485 /usr/lib64/libelf-0.172.so
sshd 9237 root mem REG 253,0 19896 33750102 /usr/lib64/libattr.so.1.1.0
sshd 9237 root mem REG 253,0 15688 33750299 /usr/lib64/libkeyutils.so.1.5
sshd 9237 root mem REG 253,0 62888 33750374 /usr/lib64/libkrb5support.so.0.1
……
3.6 -d 参数
执行命令 lsof -d 12,输出打开文件描述符 12 的所有项,如下所示:
[root@localhost ~]# lsof -d 12
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfsOutput information may be incomplete.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root 12u unix 0xffff9e2ab51d6c00 0t0 25988 /run/systemd/private
systemd-j 4392 root 12u a_inode 0,10 0 7495 [timerfd]
auditd 8686 root 12u a_inode 0,10 0 7495 [eventfd]
dbus-daem 8724 dbus 12u unix 0xffff9e2b33fac000 0t0 44865 /run/dbus/system_bus_socket
avahi-dae 8785 avahi 12u IPv4 54551 0t0 UDP *:mdns
systemd-l 8788 root 12u unix 0xffff9e2bb62cac00 0t0 48301 socket
NetworkMa 8794 root 12u netlink 0t0 52627 KOBJECT_UEVENT
udisksd 8795 root 12u a_inode 0,10 0 7495 [eventfd]
tuned 9236 root 12u a_inode 0,10 0 7495 [eventpoll]
……
3.7 fileName
执行命令 lsof /usr/lib64/ld-2.17.so,查看打开文件/usr/lib64/ld-2.17.so的进程项,如下所示:
[root@localhost ~]# lsof /usr/lib64/ld-2.17.so
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfsOutput information may be incomplete.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root mem REG 253,0 163312 33554510 /usr/lib64/ld-2.17.so
systemd-j 4392 root mem REG 253,0 163312 33554510 /usr/lib64/ld-2.17.so
lvmetad 4417 root mem REG 253,0 163312 33554510 /usr/lib64/ld-2.17.so
systemd-u 4429 root mem REG 253,0 163312 33554510 /usr/lib64/ld-2.17.so
auditd 8686 root mem REG 253,0 163312 33554510 /usr/lib64/ld-2.17.so
audispd 8688 root mem REG 253,0 163312 33554510 /usr/lib64/ld-2.17.so
sedispatc 8691 root mem REG 253,0 163312 33554510 /usr/lib64/ld-2.17.so
lsmd 8712 libstoragemgmt mem REG 253,0 163312 33554510 /usr/lib64/ld-2.17.so
rpcbind 8713 rpc mem REG 253,0 163312 33554510 /usr/lib64/ld-2.17.so
abrtd 8715 root mem REG 253,0 163312 33554510 /usr/lib64/ld-2.17.so
abrt-watc 8716 root mem REG 253,0 163312 33554510 /usr/lib64/ld-2.17.so
……
3.8 -i 参数
(1)执行命令 lsof -i 4,输出 TYPE 为 IPv4 的所有项,如下所示:
[root@localhost ~]# lsof -i 4
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root 41u IPv4 47143 0t0 TCP *:sunrpc (LISTEN)
systemd 1 root 42u IPv4 47144 0t0 UDP *:sunrpc
rpcbind 8713 rpc 4u IPv4 47143 0t0 TCP *:sunrpc (LISTEN)
rpcbind 8713 rpc 5u IPv4 47144 0t0 UDP *:sunrpc
rpcbind 8713 rpc 10u IPv4 44332 0t0 UDP *:netconf-beep
avahi-dae 8785 avahi 12u IPv4 54551 0t0 UDP *:mdns
avahi-dae 8785 avahi 13u IPv4 54552 0t0 UDP *:36757
chronyd 8893 chrony 1u IPv4 54530 0t0 UDP localhost:323
sshd 9237 root 3u IPv4 55748 0t0 TCP *:ssh (LISTEN)
……
(2)执行命令 lsof -i UDP 输出协议类型为 UDP 的所有项,如下所示:
[root@localhost ~]# lsof -i UDP
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root 42u IPv4 47144 0t0 UDP *:sunrpc
systemd 1 root 45u IPv6 47146 0t0 UDP *:sunrpc
rpcbind 8713 rpc 5u IPv4 47144 0t0 UDP *:sunrpc
rpcbind 8713 rpc 7u IPv6 47146 0t0 UDP *:sunrpc
rpcbind 8713 rpc 10u IPv4 44332 0t0 UDP *:netconf-beep
rpcbind 8713 rpc 11u IPv6 44333 0t0 UDP *:netconf-beep
avahi-dae 8785 avahi 12u IPv4 54551 0t0 UDP *:mdns
avahi-dae 8785 avahi 13u IPv4 54552 0t0 UDP *:36757
chronyd 8893 chrony 1u IPv4 54530 0t0 UDP localhost:323
chronyd 8893 chrony 2u IPv6 54531 0t0 UDP localhost:323
dnsmasq 11383 nobody 3u IPv4 61779 0t0 UDP *:bootps
dnsmasq 11383 nobody 5u IPv4 61782 0t0 UDP localhost.localdomain:domain
kubelet 20062 root 5u IPv4 211268 0t0 UDP localhost.localdomain:43225->gateway:domain
dhclient 25719 root 6u IPv4 181490 0t0 UDP *:bootpc
四、总结
lsof 在查找关于打开文件的相关信息时经常用到,上面对常用命令参数进行了介绍,更详细的内容可以查看 man 手册。
五、参考文献
[1] https://man7.org/linux/man-pages/man8/lsof.8.html
[2] https://www.cnblogs.com/sparkdev/p/10271351.html
[3] https://blog.csdn.net/xifeijian/article/details/9088137
Linux 命令 | 常用命令 lsof 详解 + 实例相关推荐
- linux命令和Linux基本常用的知识详解
Linux简介与厂商版本 1. Linux简介 Linux可以有狭义和广义两种定义.狭义来说,Linux实际上指Linux kernel (内核).内核负责管理硬件,并为上层应用提供接口.而广义来说, ...
- linux串口通信参数宏详解实例
详解linux下的串口通讯开发 串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用.常用的串口是RS-232-C接口(又称EIA RS-232-C)它是在1970年由美国电子工业协会 ...
- Linux 命令 poll 和 ppoll 详解 + 实例
- gcc命令常用选项参数详解
gcc是GUN C和C++编译器,我们通常使用GCC时,编译器会依次做如下工作:preprocess(预处理),compilation(编译),assembly(汇编),link(链接).gcc提供了 ...
- Linux系统常用命令及其使用详解大全
Linux系统常用命令及其使用详解大全 整理了linux常用的命令,最长常用的也就几十个,cd,ls ,vi等等,有些容易忘记,经常拿出来看看. 其他的可以推荐一个网站,https://www.lin ...
- Linux命令--tree--使用/详解/实例
原文网址: 见:Linux命令--tree--使用/详解/实例_IT利刃出鞘的博客-CSDN博客 简介 本文用示例介绍Linux的tree命令的用法. tree命令可以以树状结构查看目录结构. 选项 ...
- Linux新手常用命令大全详解
Linux常用命令大全详解 Linux基本常用命令 cd /home 进入 '/ home' 目录' ls 查看目录中的文件 rm -f file1 删除一个叫做 'file1' 的文件' vi fi ...
- Linux系统常用命令,指令详解及案例
现在的企业有90%甚至更过是使用Linux操作系统, 所以不管是开发还是运维, 不会点Linux知识肯定是无法进入到企业里工作. 而且, 全球500强超级计算机几乎都是使用Linux操作系统, 这也是 ...
- JVM调优系列--Java命令选项(参数)--大全/详解/常用
原文网址:JVM调优系列--Java命令选项(参数)--大全/详解/常用_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍Java的java命令用法,包括:常用用法.选项大全. J ...
最新文章
- JetBrains DataGrip工具配置数据库过程详解
- JNI中String和char之间的相互转换
- 【Android APT】注解处理器 ( 根据注解生成 Java 代码 )
- js 查找当前元素/this
- ES6 模块化的基本语法——默认导出 与 默认导入、按需导出 与 按需导入、直接导入并执行模块代码
- 使用springboot来实现WebLog
- c++获取macos中的uuid的两种方式
- vxworks linux 多线程api,vxWorks操作系统的多线程实现研究
- redis同步到磁盘
- python中的as是什么意思_python中as用法实例分析
- 笨方法学python 习题41
- 紧跟步伐,何恺明新作MAE复现历程
- Visual studio code 使用 Team Foundation Server - Windows
- Fabric chaincode shim.ChaincodeStubInterface
- 一本笔记,看懂《未来简史》!
- Linux上接收广播
- Selenium+WebDriver 各浏览器驱动下载与版本对应
- 1218:取石子游戏(swap)
- 【1024】写给最好的你-程序员
- Broadcom 802.11n网络适配器,网络连接没有有效的ip配置问题解决
热门文章
- 查看电脑最近运行过的程序记录
- 攀爬机器人 蝎子_霸气侧漏:大学生做蝎子机器人,可感应攻击物体
- Arrays.asList缺陷
- 企业微信上传素材,java httpPost Multipart FormData
- 用猿大师办公助手在Chrome网页中打开了Office Word,再用桌面Office打开其他Word打不开怎么办?
- 3D暴龙模型塞进侏罗纪公园只需一部手机,拍摄角度360°可选,Stable Diffusion又被玩出新花样...
- 内网渗透-----权限分析及防御
- android仿淘宝刮刮卡功能实现
- cibc app for android,CIBC Mobile Banking
- 【程序员学理财】了解不同理财产品的利息及合理的选择自己的理财配置