开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第13天,点击查看活动详情
一、命令详解
1.1【功能说明】
lsof是list open files的缩写,也就是列举系统中已经被打开的文件,通过lsof命令,就可以根据文件找到对应的进程信息,也可以根据进程信息找到进程打开的文件。
1.2 【语法格式】
[root@7bfe451a2fe1 /]# lsof -h
lsof [option]
-i语法格式
lsof -i [46] [protocol][@hostname][:service|port]
1.3 【选项说明】
-c <进程名>显示指定的进程名所打开的文件-p <进程号>显示指定的进程号所打开的文件-i通过监听指定的协议、端口和主机等信息,显示符号条件的进程信息-u显示指定用户使用的文件-U仅列出Unix like系统的socket文件类型-u后面接username,列出该使用者相关程序所打开的文件+d后面接目录,即找出某个目录下面已经被打开的文件-a
二、使用范例
2.1 列出目前系统上面所有已经被打开的文件与设备
lsof
2.2 根据文件找进程
[root@7bfe451a2fe1 ~]# lsof /var/log/message
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
tail 71 root 3r REG 0,64 0 403308 /var/log/message
如果想知道某个特定的文件在由哪个进程使用,就可以通过上面的命令知道,/var/log/message文件在由tail命令在使用,下面说明每列的具体含义:
COMMAND命令,进程的名称PID进程号USER进程的所有者FD文件描述符TYPE文件类型,REG为普通文件DEVICE磁盘的名称SIZE/OFF文件的大小NODE索引节点NAME文件名称
2.3 根据进程名找文件
[root@7bfe451a2fe1 ~]# lsof -c tail
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
tail 74 root cwd DIR 0,64 4096 403288 /
tail 74 root rtd DIR 0,64 4096 403288 /
tail 74 root txt REG 0,64 70880 142681 /usr/bin/tail
tail 74 root mem REG 254,1 142681 /usr/bin/tail (path dev=0,64)
tail 74 root mem REG 254,1 395950 /usr/lib64/libc-2.17.so (path dev=0,64)
tail 74 root mem REG 254,1 395926 /usr/lib64/ld-2.17.so (path dev=0,64)
tail 74 root 0u CHR 136,2 0t0 5 /dev/pts/2
tail 74 root 1u CHR 136,2 0t0 5 /dev/pts/2
tail 74 root 2u CHR 136,2 0t0 5 /dev/pts/2
tail 74 root 3r REG 0,64 11 403308 /var/log/message
2.4 根据进程号找文件
[root@7bfe451a2fe1 ~]# lsof -p 74
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
tail 74 root cwd DIR 0,64 4096 403288 /
tail 74 root rtd DIR 0,64 4096 403288 /
tail 74 root txt REG 0,64 70880 142681 /usr/bin/tail
tail 74 root mem REG 254,1 142681 /usr/bin/tail (path dev=0,64)
tail 74 root mem REG 254,1 395950 /usr/lib64/libc-2.17.so (path dev=0,64)
tail 74 root mem REG 254,1 395926 /usr/lib64/ld-2.17.so (path dev=0,64)
tail 74 root 0u CHR 136,2 0t0 5 /dev/pts/2
tail 74 root 1u CHR 136,2 0t0 5 /dev/pts/2
tail 74 root 2u CHR 136,2 0t0 5 /dev/pts/2
tail 74 root 3r REG 0,64 11 403308 /var/log/message
2.5 根据协议、端口、主机找进程
lsof -i :22
lsof -i tcp
lsof -i tcp:22
2.6 根据用户找文件
lsof -u root
三、扩展知识
3.1 其他相关指令
查询已打开文件或已执行程序打开的文件,还可以用fuser、pidof等指令
四、命令总结
- 2022/12/5 今天用户测试,组织的效率不高,测试收获不大