lsof 常用命令汇总
文章目录
lsof 常用命令汇总
按照网络状态筛选进程的 fd
|
|
-
-a
表示 and, 前后两个条件要一起生效 -
-i
和-s
一起用,表示可以按照 TCP/UDP 状态来筛选 fd -
列出进程
<pid>
建立的所有 TCP 连接
|
|
- 列出进程
<pid>
所有 IDLE 状态的 UDP 连接
|
|
根据 Unix 发行版本的不同,TCP/UDP 状态也会有不同的名字:
- 常用的 TCP 状态是:
CLOSED
,IDLE
,BOUND
,LISTEN
,ESTABLISHED
,SYN_SENT
,SYN_RCDV
,ESTABLISHED
,CLOSE_WAIT
,FIN_WAIT1
,CLOSING
,LAST_ACK
,FIN_WAIT_2
,TIME_WAIT
. - 常用的 UDP 状态是:
Unbound
,Idle
按照 fd number 查找进程的 fd
使用 strace
查看进程的系统调用的时候,经常能够看到在某个 fd 上执行读写操作,例如:
|
|
我们想要查一下这个 267 和 5405 具体代表了什么连接,可以用
|
|
例如我利用 strace 查看飞书 app 的系统调用,看到以下的信息
|
|
我想知道 fd 4 代表了什么,执行 sudo lsof -d 4 -a -p 8261
,可以看到它是我的电脑和 220.181.131.241
建立的一个 https 连接。
|
|
查看端口占用
有时候我们启动程序的时候,发现端口被占用了,可以用 lsof -i:xxx
来查看端口被哪个进程占用了,例如:
下面这条命令显示 3306 端口被 360702
和 360709
两个进程占用了。
|
|