Appium启动报4723端口被占用,杀node进程后仍被新进程占用如何解决
Appium 端口4723被持续占用永久解决方案
问题根因
杀进程后端口立即被新node进程重新占用的核心原因是存在上层守护进程/父进程在管理Appium服务的生命周期,子进程被杀死后会被自动拉起,常见触发场景有2种:
- 安装了Appium Desktop桌面版,设置了后台保活、关闭窗口最小化到托盘、开机自启,默认绑定4723端口
- 使用pm2、forever等node进程管理工具,将Appium服务配置为了自动重启策略
永久解决方案
按优先级依次尝试以下操作即可:
方案1:定位并终止父进程
- 执行
lsof -i :4723拿到当前占用端口的node进程PID - 执行
ps -ef | grep <PID>查看进程的PPID(父进程ID)字段 - 执行
ps -ef | grep <PPID>确认父进程身份:- 如果父进程是pm2/forever:执行
pm2 list查看绑定的Appium任务,执行pm2 delete <任务ID/名称>移除任务,再执行pm2 unstartup取消pm2的开机自启 - 如果父进程是Appium Desktop:打开桌面端设置,关闭「开机自启」「关闭窗口时最小化到后台」选项后完全退出桌面端即可,不需要桌面端的可以直接卸载,仅保留命令行版本
- 如果父进程是pm2/forever:执行
- 终止父进程后再执行
kill -9 <4723端口对应的PID>即可彻底释放端口
- 执行
方案2:修改Appium默认启动端口
如果不想排查父进程,可以直接更换Appium绑定端口,完全避开4723的占用冲突:
启动Appium时添加-p参数指定端口即可,比如使用4724端口的启动命令为:appium -p 4724后续所有脚本、测试工具连接Appium服务时,端口同步修改为你指定的端口即可,不会再出现端口占用问题
临时方案优化
当前使用的kill -9 PID | appium 命令存在时序问题,管道两边进程会同时启动,大概率会出现杀进程未完成Appium就启动的情况,优化后的临时命令为:
kill -9 $(lsof -t -i:4723) && appium
该命令会先自动查询4723端口的PID并杀死,等操作完成后再启动Appium,成功率更高。
内容的提问来源于stack exchange,提问作者Marvin
相关产品推荐
相关产品推荐

