我尝试使用端口 5000 运行我的 Express 应用程序,我发现某些进程已经在使用它:
↳ lsof -i :5000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ControlCe 1677 user 32u IPv4 0x728ff8e52d51c6dd 0t0 TCP *:commplex-main (LISTEN)
ControlCe 1677 user 33u IPv6 0x728ff8e51d98ec65 0t0 TCP *:commplex-main (LISTEN)
所以我只是尝试杀死它们来解锁端口,但它不起作用,因为一旦我运行kill(或sudo Kill)命令,具有新PID的进程就会再次锁定我的5000端口。
↳ kill 1677
↳ lsof -i :5000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ControlCe 2159 user 32u IPv4 0x728ff8e52fd4dc1d 0t0 TCP *:commplex-main (LISTEN)
ControlCe 2159 user 33u IPv6 0x728ff8e51d98d0e5 0t0 TCP *:commplex-main (LISTEN)
我杀掉了1677进程,然后又出来了一个新进程(PID为2159)。 它有不同的PID和不同的设备。我已经尝试重新启动我的笔记本电脑,但它也无法正常工作。有使用 M1 或 Intel Mac 的人遇到过类似的问题吗?
编辑:我认为 ControlCe 意味着控制中心?
关闭
AirPlay Receiver
(侦听端口 5000)为我解决了这个问题:
转到 系统偏好设置 --> 共享 --> 取消选中
AirPlay Receiver
欲了解更多详情: https://utf9k.net/questions/macos-port-5000-monterey/
我也遇到了同样的问题。我认为这是因为 macOS Monterey (12.0)。要修复它,请在终端中运行以下命令:
pkill ControlCenter; nc -l 5000
...然后几秒钟后按 Ctrl+C。
这样做会杀死
ControlCenter
进程,然后启动一个空的 netcat TCP 服务器,监听 ControlCenter
使用的端口,即 5000。这样,因为 ControlCenter
会自动重新启动当它被杀死时,它会在 ControlCenter
启动之前分配该端口,这样当它启动时,它会发现它的端口正在使用,然后它就会死亡。
对于 macOS 索诺玛: 去 系统设置 -> 常规 -> Airplay 接收器。 <- Turn it off. Your 5000 port will be released from "ControlCe".