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
杀死进程(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