使用PM2启动含sudo的SeleniumGrid脚本后命令持续重复迭代的问题
解决PM2重复执行Selenium Grid启动脚本的问题
问题根源
你的脚本执行docker-compose up -d时,-d参数会让Docker Compose后台运行服务,脚本本身执行完就立刻退出。PM2的默认逻辑是托管的进程一旦退出就自动重启,所以才会不断重复执行这个启动脚本。
具体解决方案
方案一:修改脚本让进程保持前台运行
去掉docker-compose up命令里的-d参数,让Docker Compose在前台运行,这样脚本会一直处于活跃状态,PM2不会触发重启:
修改后的脚本:#!/bin/bash cd /home/pi/dockertest sudo -S <<< Adminpassword docker-compose up --scale chrome=2 --scale firefox=0重启PM2进程生效:
pm2 restart SeleniumGrid方案二:禁止PM2自动重启进程
如果不想改动脚本,直接在PM2启动时添加--no-autorestart参数,关闭自动重启机制:
先清理现有进程:pm2 stop SeleniumGrid pm2 delete SeleniumGrid重新启动脚本:
pm2 start '/home/user/dockertest/startGrid.sh' --name SeleniumGrid --no-autorestart方案三:用Docker自身的重启策略替代PM2监控(推荐)
若需求是开机自启Selenium Grid,更合理的方式是让Docker自己管理服务重启。在docker-compose.yml中给Chrome服务添加restart: always配置:services: chrome: # 其他配置... restart: always之后可以移除PM2对该脚本的托管,直接用Docker的机制保障服务可用性。
内容的提问来源于stack exchange,提问作者vignesh p
相关产品推荐
相关产品推荐

