M1 Mac控制中心进程反复重启占用5000端口kill无法释放求助
问题原因
这是MacOS 12 Monterey及以上版本的默认系统行为,控制中心内置的AirPlay接收器功能会默认占用5000、7000两个端口,该问题和芯片型号无关,所有升级到对应系统版本的M系列、Intel芯片Mac都会出现该情况。
因为AirPlay接收器是系统内置服务,所以手动kill对应ControlCenter进程后会自动重启,重启设备也不会改变默认配置,所以会出现端口被反复占用的情况。
解决方案
按需选择以下任意一种方案即可:
方案1:关闭AirPlay接收器(直接释放5000端口)
操作步骤:
- 打开系统设置(Monterey及更早版本为「系统偏好设置」)
- Ventura及以上版本路径:进入「通用」-「隔空投送与接力」,找到最底部的「AirPlay接收器」;Monterey版本路径:进入「共享」,直接找到「AirPlay接收器」
- 取消勾选「AirPlay接收器」选项
- 无需重启,直接执行
lsof -i :5000即可确认端口已经释放
方案2:修改Express应用监听端口(不改动系统配置)
如果不想调整系统默认设置,可以直接修改Express服务的监听端口,替换为其他未被占用的端口即可,比如3000、8080等,示例代码如下:
// 原监听5000端口的代码 app.listen(5000, () => { console.log('服务运行在5000端口') }) // 修改为其他端口 app.listen(3000, () => { console.log('服务运行在3000端口') })
也可以在启动时通过环境变量动态指定端口,避免硬编码带来的适配问题。
内容的提问来源于stack exchange,提问作者snu
相关产品推荐
相关产品推荐

