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

SSH断开后Python+Selenium的Chromedriver无法启动问题求助

问题原因及解决办法

核心原因

你的问题核心是AppArmor权限限制:从syslog报错能明确看到,snap版本的chromium.chromedriver被禁止访问/proc/[pid]/mem文件。SSH会话内运行时,环境上下文可能绕过了部分AppArmor规则,但cron定时任务或退出SSH后的后台会话会严格触发该限制,直接导致chromedriver启动失败。

另外,cron的执行环境和SSH会话存在差异,缺失部分环境变量(如PATH等)也可能间接影响,但当前日志明确指向AppArmor的权限问题,所以优先解决这个核心矛盾。

解决步骤

方案1:调整AppArmor规则(针对snap版chromium)

  1. 找到snap.chromium.chromedriver的AppArmor配置文件,通常路径为:
    /var/lib/snapd/apparmor/profiles/snap.chromium.chromedriver
    
  2. 编辑该文件,添加一行允许访问/proc进程内存的规则:
    /proc/*/mem r,
    
  3. 重新加载AppArmor规则使修改生效:
    sudo apparmor_parser -r /var/lib/snapd/apparmor/profiles/snap.chromium.chromedriver
    
  4. 测试cron任务或后台运行脚本是否恢复正常

临时测试方案:如果只是验证问题根源,可以先禁用该AppArmor profile(不推荐长期使用):

sudo aa-disable snap.chromium.chromedriver

方案2:替换为APT安装的chromium(更稳定)

snap包的AppArmor限制通常更严格,换成APT源的chromium能从根源避免这类权限问题:

  1. 移除snap版chromium:
    sudo snap remove chromium
    
  2. 安装APT版chromium及对应chromedriver:
    sudo apt update && sudo apt install chromium-browser chromium-chromedriver
    
  3. 修改Python脚本中的webdriver路径,指向APT安装的chromedriver(默认路径为/usr/lib/chromium-browser/chromedriver),或者让Selenium自动检测系统路径

方案3:完善cron的环境变量

确保cron任务拥有必要的环境变量,避免因路径或上下文缺失导致的附加问题:
编辑cron任务(执行crontab -e)时,先添加环境变量配置:

SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# 示例:每天凌晨1点执行脚本并记录日志
0 1 * * * /usr/bin/python3 /path/to/your/main.py >> /var/log/selenium_cron.log 2>&1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 23:32:54