lsof命令的其他用法有哪些?
美国、香港服务器
lsof命令的其他用法有哪些?
08-16 来源:
lsof(List Open Files)是 Linux 系统中功能强大的工具,用于列出系统中所有被进程打开的文件(包括普通文件、目录、网络套接字、设备等)。除了查看进程占用的文件,它还有许多实用用法,以下是常见场景:
1. 查看某个文件 / 目录被哪些进程占用
当文件或目录被占用导致无法删除 / 修改时,可查占用进程:
bash
# 查看指定文件被哪些进程占用(如 /var/log/syslog)
lsof /var/log/syslog
# 查看指定目录被哪些进程占用(如 /data)
lsof +D /data # +D 表示递归查看目录下所有文件
2. 查看网络连接相关的进程
lsof 可列出所有网络连接(TCP/UDP)及对应的进程,替代部分 netstat 功能:
bash
# 列出所有网络连接(包括TCP/UDP)
lsof -i
# 查看指定端口被哪个进程占用(如端口 8080)
lsof -i :8080
# 查看指定协议的连接(如TCP)
lsof -i tcp
# 查看与指定IP的连接(如 192.168.1.100)
lsof -i @192.168.1.100
# 查看外部IP:端口的连接(如连接到 203.0.113.5:443)
lsof -i @203.0.113.5:443
3. 按用户筛选进程打开的文件
查看某个用户的所有进程打开的文件:
bash
# 查看用户 root 打开的所有文件
lsof -u root
# 排除某个用户(如排除 root)
lsof -u ^root
4. 按进程名称筛选
根据进程名(而非 PID)查看其打开的文件:
bash
# 查看所有 nginx 进程打开的文件
lsof -c nginx # -c 后接进程名前缀(支持模糊匹配)
# 精确匹配进程名(如只匹配 nginx 不匹配 nginx-worker)
lsof -c ^nginx$
5. 列出所有被删除但仍被进程占用的文件
Linux 中,若文件被删除但进程仍在使用,磁盘空间不会释放。可通过 lsof 查找这类文件:
bash
lsof +L1 # +L1 表示文件链接数小于1(已删除但被占用)
用途:释放被占用的磁盘空间(重启对应的进程即可)。
6. 查看某个进程的网络连接详情
结合进程 ID 和网络选项,查看指定进程的网络活动:
bash
# 查看 PID 1234 进程的所有网络连接
lsof -p 1234 -i
7. 列出所有打开的 UNIX 域套接字
UNIX 域套接字用于本地进程间通信,可通过 lsof 查看:
bash
lsof -U # -U 表示列出UNIX域套接字
8. 保存输出到文件
将结果保存到文件,便于后续分析:
bash
lsof -i :80 > port80_connections.txt
常用参数总结
参数 功能描述
-p 进程ID 查看指定进程打开的文件
-i 列出所有网络连接(TCP/UDP)
-i :端口 查看指定端口的占用进程
-u 用户名 查看指定用户的进程打开的文件
-c 进程名 按进程名筛选(支持前缀匹配)
+D 目录 递归查看目录下被打开的文件
+L1 查找已删除但仍被进程占用的文件
-U 列出所有 UNIX 域套接字
lsof 是系统排查问题的利器,尤其在处理 “文件占用”“端口冲突”“磁盘空间异常” 等场景时非常实用。使用 man lsof 可查看完整参数说明。
三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快