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

通过Cron运行Selenium脚本时出现DevToolsActivePort文件不存在问题

解决Cron执行Selenium Chrome启动失败的问题

核心原因

Cron执行环境与用户手动登录环境存在差异,缺少图形会话支持、关键环境变量,同时用户数据目录的权限或路径配置可能存在问题。

具体修复步骤

1. 调整Chrome启动参数

修改setup_browser()函数,强制启用无头模式并补充必要配置:

def setup_browser():
    options = Options()
    # 启用最新无头模式(必须添加,适配无图形环境)
    options.add_argument("--headless=new")
    options.add_argument('--disable-extensions')
    options.add_argument('--disable-gpu')
    options.add_argument('--no-sandbox')
    options.add_argument('--disable-dev-shm-usage')
    # 指定虚拟显示端口,解决Cron无图形界面问题
    options.add_argument('--display=:0')
    options.add_argument(
        "--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36")
    options.add_argument("--user-data-dir=/home/ubuntu/snap/chromium/common/chromium/")
    options.add_argument("--profile-directory=Profile 1")
    # 补充窗口大小,避免无头模式下布局异常
    options.add_argument("--window-size=1920,1080")
    driver = webdriver.Chrome(options=options)

    return driver

2. 修复Shell脚本的环境与权限

修改rate_trips.sh,确保Cron能加载正确环境并避免误杀进程:

#!/bin/bash
# 加载用户环境变量,弥补Cron默认环境的缺失
source /home/ubuntu/.profile
# 只杀掉当前用户的相关进程,防止误操作系统进程
pkill -u ubuntu chromium
pkill -u ubuntu chromium-browser
pkill -u ubuntu chromedriver
pkill -u ubuntu chrome
cd /home/ubuntu/Documents/turo
# 明确指定Python路径,避免Cron找不到虚拟环境中的Python
./venv/bin/python -c "from auto import rate_all_trips;rate_all_trips()"

给脚本添加执行权限:

chmod +x /home/ubuntu/Documents/turo/rate_trips.sh

3. 确保用户数据目录权限正确

Cron执行用户(默认是ubuntu)需要对Chrome用户数据目录有读写权限:

sudo chown -R ubuntu:ubuntu /home/ubuntu/snap/chromium/common/chromium/

4. 配置Cron任务时使用完整路径

编辑Cron任务,指定脚本完整路径并开启日志输出以便排查:

crontab -e

添加示例任务(每天12点执行):

0 12 * * * /home/ubuntu/Documents/turo/rate_trips.sh >> /home/ubuntu/Documents/turo/cron_logs.log 2>&1

问题根源说明

  • 未启用无头模式:Cron无图形会话,Chrome无法启动图形界面版本
  • 环境变量缺失:Cron默认PATH等变量与用户登录环境不同,导致找不到Chrome或Python
  • 权限不足:Cron执行用户可能没有Chrome用户数据目录的读写权限,导致启动失败
  • 多余的调试端口参数:--remote-debugging-port在无头模式下不必要,反而可能引发端口冲突或连接问题

内容的提问来源于stack exchange,提问作者Lucas Duarte Almeida

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 03:21:32