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

将Python Selenium Chromedriver作为systemd服务运行时遇启动异常求助

解决systemd启动Selenium ChromeDriver时的版本检测/进程崩溃问题

核心原因

systemd的运行环境和普通bash会话存在差异:默认缺少用户环境变量、无桌面上下文、权限限制,导致Chrome无法正常启动,进而被ChromeDriver判定为崩溃。

具体解决方案

1. 硬编码Chrome和ChromeDriver路径,避免依赖PATH

在你的Selenium代码中直接指定二进制文件路径,消除环境变量依赖:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service

options = Options()
# 指定Chrome二进制路径
options.binary_location = "/usr/bin/google-chrome"
# 指定ChromeDriver路径
service = Service(executable_path="/usr/bin/chromedriver")
# 无桌面环境需添加以下参数
options.add_argument("--headless=new")
options.add_argument("--no-sandbox")
options.add_argument("--disable-dev-shm-usage")

driver = webdriver.Chrome(service=service, options=options)

可通过which google-chrome和which chromedriver确认实际路径

2. 配置systemd服务的环境与权限

编辑你的systemd服务文件(比如/etc/systemd/system/selenium-parser.service),添加必要的环境变量和用户上下文:

[Unit]
Description=Selenium Chrome Parser Service
After=network.target

[Service]
# 指定运行脚本的用户(和你bash会话用的用户一致)
User=your-username
Group=your-username
# 设置工作目录为脚本所在路径
WorkingDirectory=/home/your-username/parser-scripts
# 传递必要的环境变量,无桌面环境可跳过DISPLAY/XAUTHORITY
Environment="DISPLAY=:0"
Environment="XAUTHORITY=/home/your-username/.Xauthority"
# 如需虚拟桌面,用xvfb-run包裹启动命令
ExecStart=/usr/bin/xvfb-run -a /usr/bin/python3 /home/your-username/parser-scripts/your-script.py
# 重启策略
Restart=on-failure

[Install]
WantedBy=multi-user.target

修改后执行重载和重启:

sudo systemctl daemon-reload
sudo systemctl restart selenium-parser.service

3. 验证Chrome的可执行性

切换到服务指定的用户,手动启动Chrome确认无报错:

su - your-username -c "/usr/bin/google-chrome --headless=new --no-sandbox --disable-dev-shm-usage --version"

如果报错,检查Chrome的依赖是否完整(比如缺失libnss3等库,需用apt install libnss3 libatk1.0-0 libatk-bridge2.0-0 libcups2 libdrm2 libxkbcommon0 libxcomposite1 libxdamage1 libxrandr2 libgbm1 libgtk-3-0 libasound2补全)

4. 确认ChromeDriver与Chrome版本匹配

运行以下命令核对版本:

google-chrome --version
chromedriver --version

两者主版本号必须一致(比如Chrome 119.x对应ChromeDriver 119.x),版本不匹配会直接导致启动失败。


内容的提问来源于stack exchange,提问作者Em1tao

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 21:23:11