开发过程中,经常遇到“xx端口被占用”的报错信息,一种解决方法就是kill掉占用端口的进程。那么问题来了,如何知道哪个进程占用了该端口呢?
1. lsof (推荐)
lsof(list open files)是一个查看当前系统文件的工具。在linux环境下,任何事物都以文件的形式存在,包括网络连接和硬件。
#查看80端口占用
lsof -i:80
# kill 进程
kill -9 {pid}
特点:
- 适用性广,centos,ubuntu,macOS都ok的。
- 会列出进程PID,方便kill。
2. netstat
Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等
# 查看8080端口占用
netstat -anp | grep 8080
netstat 常用参数 | 解释 |
---|---|
-a | 列出所有端口 |
-l | 仅列出监听端口(默认) |
-n | 拒绝显示别名,能显示数字的全部转化成数字 |
-p | 显示建立相关链接的程序名/pid |
-t | (tcp)仅显示tcp相关选项 |
-u | (udp)仅显示udp相关选项 |
注意
以上命令都是查询当前用户的进程,要查看所有进程,需加上sudo,或者登录root用户。