各系统(Mac、Lunix、Windows)查看端口被占用情况及处理

Mac

lsof -i :port port 指代端口号,下文中都是如此

lsof -i tcp:port tcp 表示查看tcp类型的进程

Linux

1. ss 命令

一般用于转储套接字统计信息,它可以比其它工具显示更多的 TCP 信息和状态信息。
ss -tnlp | grep ssh 查看ssh进程
ss -tnlp | grep ":port"

2. netstat 命令

netstat 能够显示网络连接、路由表、接口统计信息、伪装连接以及多播成员。默认情况下,netstat 会列出已打开的套接字。
netstat -anp | grep port
netstat -lnp | grep port

netstat 常用参数参考:

  • -n, --numeric don't resolve names,不解析名称,即用网络IP地址代替名称,以显示网络连接情形
  • -p, --programs display PID/Program name for sockets,显示建立相关连接的程序名和PID
  • -l, --listening display listening server sockets 显示在 listening (监听) 的服务状态
  • -a, --all display all sockets (default: connected) 显示所有socket(否则默认只显示已连接的)
3. lsof 命令

能够列出打开的文件,并列出系统上被进程打开的文件的相关信息。
lsof -i :port

查看具体某类进程

ps -ef | grep 进程名
举:
ps -ef | grep node 查看Nodejs服务 占用的端口
ps -ef | grep nginx

image.png

杀死进程(Linux和Mac皆可)

kill -9 port -9指令是指强杀进程(非必要不推荐使用,还是找出对应的程序结束它的运行并修改冲突端口为好)

另外,用pm2运行的项目占用的端口貌似杀不掉,有种可能就是pm2已经运行了这个项目(我自己就是忘记了),本地又想运行下进行测试,造成的冲突。

Windows

netstat -ano | findstr "port"


用 PID 值去查出进程名(上图的PID是852)
tasklist | findstr "PID"
然后可以去任务管理器中去终止对应程序,或者用 taskkill 命令结束:
taskkill /f /t /im PID

你可能感兴趣的:(各系统(Mac、Lunix、Windows)查看端口被占用情况及处理)