本文共 1799 字,大约阅读时间需要 5 分钟。
lsof(List Open Files)是一个用于列出系统中当前打开文件的工具。它能够显示进程打开的文件、文件所属的进程、文件的端口(包括TCP和UDP)、以及帮助恢复删除的文件等功能。在Linux环境下,所有资源都以文件形式存在,包括网络连接和硬件设备。这些资源通过文件描述符与应用程序和操作系统进行交互,因此,查看文件描述符列表对于系统监控和故障排除具有重要意义。使用lsof命令前,需要确保具有root权限,因为它需要访问核心内存和文件系统。
lsof [参数] [文件]
-a:列出所有打开文件的进程-c:指定进程名,列出该进程打开的文件-g:指定组ID,列出该组ID进程打开的文件-d:指定文件描述符ID,列出占用该文件描述符的进程-D:递归列出指定目录下被打开的文件-+D:递归列出指定目录下被打开的文件(与-D功能相同)-n:列出使用NFS文件系统的文件-i:列出符合特定条件的进程(如协议、端口、IP地址)-p:指定进程号,列出该进程号打开的文件-u:指定用户ID,列出该用户ID进程打开的文件-h:显示帮助信息-v:显示版本信息命令输出包括以下信息:
COMMAND:进程名称PID:进程标识符PPID:父进程标识符(需要指定-R参数)USER:进程所有者PGID:进程所属组IDFD:文件描述符 cwd:当前工作目录txt:程序二进制文件或共享库er:文件描述符信息错误ltx:共享库文本部分mem:内存映射文件pd:父目录rtd:根目录tr:内核跟踪文件(OpenBSD)u、r、w等)DIR、CHR、BLK等)lsof
输出显示系统启动时打开的文件列表,包括/init、/lib64/libnss_files-2.12.so等。
lsof /usr/bin/nginx
输出显示进程nginx打开的文件,包括/usr/local/nginx/sbin/nginx。
lsof +D /opt/gogs/
输出显示/opt/gogs目录下所有被打开的文件,包括/opt/gogs/log/xorm.log。
lsof -p 9876
输出显示进程9876打开的所有文件,包括/bin/bash和/usr/lib/locale/locale-archive。
lsof -c gogs
输出显示进程gogs打开的所有文件,包括/opt/gogs/gogs和/lib64/libfreebl3.so。
lsof -u upfor
输出显示用户upfor打开的所有文件,包括/sshd和/usr/sbin/sshd。
lsof -u ^root,^upfor /opt/gogs/gogs
输出显示/opt/gogs/gogs文件的所有打开者,排除了root和upfor用户。
lsof -p 9183,26655
输出显示进程9183和26655打开的文件,包括/home/upfor/.nvm/versions/node/v9.7.1/bin/node和/usr/local/nginx/sbin/nginx。
lsof -p ^9183,^26655
输出显示系统中除9183和26655进程外的所有文件。
lsof -i
输出显示系统中所有网络连接信息,包括TCP和UDP端口。
lsof -i tcp
输出显示所有TCP网络连接信息。
lsof -i :80
输出显示使用TCP端口80的所有进程。
lsof -a -u upfor -i
输出显示用户upfor打开的所有活跃网络端口。
lsof -N
输出显示系统中所有网络文件系统信息。
lsof -g 501
输出显示用户组ID为501的所有文件。
通过合理使用lsof命令,可以有效监控系统中文件和进程的状态,快速定位问题并进行处理。
转载地址:http://wawfk.baihongyu.com/