lsof 是 linux/unix 系统中用于列出所有打开文件的强大工具,1. 可通过 lsof -p <pid> 查看特定进程打开的文件;2. 使用 lsof -i 查看网络套接字,lsof -i :端口 可定位端口占用;3. 用 lsof -u 用户名 查看指定用户打开的文件;4. 使用 lsof +d /目录 递归查看某目录下被打开的文件;5. lsof -c 命令名 可按进程名过滤;6. 输出中的 command、pid、user、fd、type、name 等列分别表示进程名、进程id、用户、文件描述符、文件类型和文件/网络地址信息,掌握这些列的含义有助于深入分析系统状态、排查资源占用、调试服务异常和进行安全审计,是系统运维和故障排查中不可或缺的工具。

lsof
查看进程打开的文件以及查询网络连接,
lsof
要查看某个特定进程打开了哪些文件,最直接的方式就是使用
lsof -p <PID>
sshd
ps aux | grep sshd
sshd
lsof -p <那个PID>
至于网络连接的查询,
lsof -i
lsof -i :80
lsof -i :端口号
这问题问得好,很多人可能觉得,一个进程打开了什么文件,跟我有什么关系?但实际上,这背后隐藏着很多系统运行的秘密,也是我们排查问题、优化性能、甚至进行安全审计的关键线索。
首先,资源限制是个大问题。每个进程能打开的文件描述符(File Descriptor,FD)数量是有限的,系统也有一个总的限制。当一个应用程序出现“Too many open files”的错误时,
lsof
lsof -p PID | wc -l
其次,调试和故障排查。一个服务启动不起来,或者行为异常,它可能在尝试读取一个不存在的配置文件,或者写入一个没有权限的日志目录。通过
lsof -p PID
再者,安全审计。一个进程在后台偷偷摸摸地打开了某个敏感文件,或者建立了可疑的网络连接,这都可能是潜在的安全风险。通过定期检查关键进程的
lsof
lsof
比如说,我想看看某个用户,比如
nginx
lsof -u nginx
nginx
nginx
lsof -i -u nginx
有时候,我们需要查看某个特定目录下的文件被哪些进程打开了,这在卸载文件系统或者进行磁盘清理时非常有用。比如,我想知道
/var/log
lsof +D /var/log
+D
lsof
对于网络部分,除了
lsof -i :端口
lsof -i tcp:listen
netstat -tulnp
lsof -i @192.168.1.100
另一个有用的场景是,当我知道一个进程的名称,但不知道它的 PID 时,可以用
lsof -c <command_name>
lsof -c apache2
apache2
lsof
lsof
一个典型的
lsof
sshd
nginx
mysql
cwd
txt
mem
rtd
u
r
w
a
u
r
w
a
3u
REG
DIR
CHR
/dev/pts/0
BLK
/dev/sda
FIFO
SOCK
IPv4
IPv6
协议->本地地址:本地端口->远程地址:远程端口 (状态)
TCP *:80 (LISTEN)
TCP 192.168.1.10:22->192.168.1.1:54321 (ESTABLISHED)
举个例子,一行输出可能是这样的:
sshd 1234 root 3u IPv4 0x1234567890 0t0 TCP *:22 (LISTEN)
sshd
理解这些列的含义,你就能像侦探一样,从
lsof
以上就是如何查看进程打开的文件 lsof命令网络连接查询的详细内容,更多请关注php中文网其它相关文章!
 
                        
                        每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
 
                Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号