开发项目时,经常会碰到启动服务端口冲突的报错。一般会有两种情况,我们知道某个端口被占用,导致冲突,还有一种情况,我们并不知道哪个端口冲突,却知道冲突的服务。比如 Nginx 服务已经启动,再次启动会失败,这时候我们也需要杀死该进程。
端口查看
比如在这里,我知道 8080 端口启动失败,说明它被占用,只要查处 8080 的进程 ID 就行。终端输入
lsof -i:8080
其中 8080 是我要查看的端口,这里可以改成你需要的。
Olivers-MMP:~ guozh$ lsof -i:8080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
QQ 283 guozh 23u IPv4 0x2c143fdd8051bddd 0t0 TCP 192.168.1.101:63009->113.96.13.79:http-alt (ESTABLISHED)
QQ 283 guozh 46u IPv4 0x2c143fdd8051bddd 0t0 TCP 192.168.1.101:63009->113.96.13.79:http-alt (ESTABLISHED)
java 20774 guozh 116u IPv6 0x2c143fdd6b892f9d 0t0 TCP *:http-alt (LISTEN)
查出结果如上,很明显,第三行 Java 是我们需要杀死的进程。它的 PID 是 20774。
所以只需要
kill -9 20774
服务名称查看
这种情况是我们不知道该服务的端口,但却知道冲突的服务是什么,比如 Nginx 。需要根据名字查该进程的 PID。
ps -A | grep nginx
是 A 不是 a
然后杀死 11405 进程就行。具体看 macOS 上安装 Nginx,基本命令使用 ,里面提到过。
OK 搞定。
本文由老郭种树原创,转载请注明:https://guozh.net/kill-process-and-service-on-macos/