Bash脚本手动运行正常但通过Cron调度时无法执行Python脚本的问题排查
Cron调度Bash脚本时无法执行Python脚本的问题排查与解决
我来帮你分析下这个问题:你的脚本手动运行完全正常,但通过Cron调度时,只会不断打印启动信息,却不实际执行Python脚本,这大概率和Cron的运行环境与用户手动环境不一致有关,下面是具体的排查方向和解决方案:
核心原因分析
Cron运行脚本时,会使用极简的环境变量(比如PATH路径很短、没有图形会话环境),而你的脚本依赖的Python路径、工作目录、Firefox运行环境在Cron环境下都可能出现问题:
- Python脚本或Python解释器的路径问题:Cron的工作目录不是脚本所在目录,
mmr-gen.py可能找不到;或者python3在Cron的PATH里不存在。 - Firefox的图形环境依赖:你的Python脚本调用Firefox,但Cron运行在无图形的会话中,Firefox无法启动,导致Python脚本立刻返回非0错误码,触发循环重试,看起来就像没执行Python脚本一样。
- 原有进程查杀逻辑的潜在问题:
pidof -x start-manheim.sh在Cron环境下可能匹配到Cron自身的进程,导致脚本逻辑异常。
具体解决方案
1. 强制使用绝对路径
修改脚本中Python调用的部分,把相对路径改成绝对路径:
- 先确认
mmr-gen.py的绝对路径(比如/root/mmr-gen.py) - 确认
python3的绝对路径,执行which python3,比如得到/usr/bin/python3
把脚本里的:
python3 mmr-gen.py;
改成:
/usr/bin/python3 /root/mmr-gen.py;
2. 让Firefox在无头模式下运行
如果你的Python脚本是用Selenium调用Firefox,必须添加无头模式参数,否则在无图形的Cron环境下Firefox会启动失败:
在Python代码里添加:
from selenium import webdriver from selenium.webdriver.firefox.options import Options options = Options() options.add_argument('--headless=new') # Firefox 102+推荐的无头模式 driver = webdriver.Firefox(options=options)
3. 优化进程查杀逻辑(更严谨)
原有的pidof -x start-manheim.sh可能会误匹配其他包含脚本名的进程,改用pgrep精准匹配脚本的完整命令:
for pid in $(pgrep -f "/bin/bash /root/start-manheim.sh"); do if [ "$pid" != "$$" ]; then kill -9 "$pid"; fi done
4. 在脚本开头补充环境变量
在脚本最顶部添加环境变量配置,确保Cron有足够的路径:
#!/bin/bash # 补充Cron缺失的环境变量 export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin # 如果Firefox不在默认PATH里,也要添加其路径,比如: # export PATH=$PATH:/usr/lib/firefox
修改后的完整脚本示例
#!/bin/bash # 补充环境变量 export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin # 查杀其他脚本实例 for pid in $(pgrep -f "/bin/bash /root/start-manheim.sh"); do if [ "$pid" != "$$" ]; then kill -9 "$pid"; fi done while true do # 先杀掉Firefox进程(如果需要的话) pkill -f firefox; echo "starting script on `date`"; # 使用绝对路径调用Python脚本 /usr/bin/python3 /root/mmr-gen.py; if [ $? -eq 0 ] then break; fi done
测试方法
你可以用env -i模拟Cron的极简环境运行脚本,提前排查问题:
env -i /bin/bash /root/start-manheim.sh
如果运行时出现错误,会直接打印出来,方便你定位问题。
内容的提问来源于stack exchange,提问作者oussama
相关产品推荐
相关产品推荐

