lsof 是一个在 Unix 及 Unix-like 操作系统中的命令行工具,用于列出当前系统打开的所有文件。lsof 的全称是 “list open files”,意为列出打开的文件。这个命令可以显示出哪些进程打开了哪些文件,或者哪些文件被哪些进程打开。这在诊断系统问题或者查找特定进程或者文件时非常有用。
- 查找哪个进程正在使用某个端口:
例如,如果想知道哪个进程正在使用端口8080,可以使用以下命令:
lsof -i :8080
- 查找哪个进程打开了某个文件:
例如,想知道哪个进程打开了/etc/passwd文件,可以使用以下命令:
lsof /etc/passwd
- 查找某个用户打开了哪些文件:
例如,想知道用户root打开了哪些文件,可以使用以下命令:
lsof -u root
- 查找某个进程打开了哪些文件:
例如,想知道进程ID为1234的进程打开了哪些文件,可以使用以下命令:
lsof -p 1234
- 列出所有网络连接:
lsof -i
- 列出所有TCP或UDP连接:
lsof -i tcp; lsof -i udp;
- 列出所有LISTENING状态的进程:
lsof -i | grep LISTEN
lsof 的参数可以进行组合使用,以满足更复杂的查询需求。以下是一些例子:
- 查找某个用户打开的所有网络连接:
lsof -a -u 用户名 -i
这里的 -a 参数表示 “and”,所以这个命令的意思是列出用户名下的所有网络连接。
- 查找某个用户的某个进程打开的所有文件:
lsof -a -u 用户名 -p 进程ID
这个命令将列出某个用户的某个进程打开的所有文件。
- 查找某个用户在某个端口上的所有活动:
lsof -a -u 用户名 -i :端口号
这个命令将列出某个用户在某个端口上的所有活动。
- 查找某个用户的某个进程在某个端口上的所有活动:
lsof -a -u 用户名 -p 进程ID -i :端口号
这个命令将列出某个用户的某个进程在某个端口上的所有活动。
需要注意的是这个命令可能需要root权限才能运行。