开发过程中, 经常遇到 "xx 端口被占用" 的报错信息, 一种解决方法就是 kill 掉占用端口的进程. 那么问题来了, 如何知道哪个进程占用了该端口呢?
一, lsof (推荐)
lsof(list open files) 是一个查看当前系统文件的工具. 在 linux 环境下, 任何事物都以文件的形式存在, 包括网络连接和硬件.
- # 查看 80 端口占用
- lsof -i:80
- # kill 进程
- kill -9 {pid}
特点:
适用性广, centos,ubuntu,macOS 都 ok 的.
会列出进程 PID, 方便 kill.
二, 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 用户.
来源: http://www.jianshu.com/p/fbe4bca19b6b