You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 17:32:36