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

Ubuntu 16.04下Cron调用Shell脚本执行Python3定时任务的问题

问题分析与解决方案

咱们先梳理下你当前遇到的两个核心问题:Cron表达式配置错误,以及Shell脚本的执行逻辑漏洞。让我们一步步来解决:

1. 修正Cron表达式:实现“每小时第2分钟执行”

你当前用的*/2 * * * *是每2分钟执行一次任务,这和你想要的“每小时的第2分钟执行”完全不符。正确的Cron表达式应该是:

2 * * * * bash /home/john/PYTHONS/MASTER.sh

这个表达式的含义是:分钟固定为2,小时、日期、月份、星期无限制,也就是每天每小时的第2分钟触发一次任务。

2. 修复Shell脚本的执行逻辑

你的Shell脚本存在几个潜在问题,比如切换目录后未处理失败情况、Python路径可能不明确等。这里给你一个可靠的版本:

#!/bin/bash
# 切换到Python脚本所在目录,如果切换失败则直接退出,避免后续命令在错误路径执行
cd /home/john/PYTHONS/ || exit 1

# 先在终端执行`which python3`,获取你的Python3实际绝对路径,替换下面的内容
PYTHON_PATH="/usr/bin/python3"

# 执行两个Python脚本,并将输出和错误信息写入日志,方便排查问题
$PYTHON_PATH COMPLEXPYTHON.py >> /home/john/PYTHONS/cron_task.log 2>&1
$PYTHON_PATH SIMPLEPYTHON.py >> /home/john/PYTHONS/cron_task.log 2>&1

脚本关键细节说明:

  • cd /home/john/PYTHONS/ || exit 1:如果切换目录失败(比如目录不存在),脚本会立即退出,避免后续Python脚本在错误的工作目录执行(可能导致依赖文件找不到)。
  • 使用Python3绝对路径:Cron的环境变量PATH比用户登录后的PATH窄很多,直接写python3可能会找不到命令,所以必须用which python3查清楚实际路径再替换。
  • 日志重定向:>> ... 2>&1会把脚本的正常输出和错误信息都写入日志文件,方便你后续排查任务是否执行成功、哪里出了问题。

3. 确保Shell脚本具备可执行权限

执行以下命令给脚本添加可执行权限,否则Cron可能无法直接运行它:

chmod +x /home/john/PYTHONS/MASTER.sh

4. 验证与排查问题

  • 先手动执行脚本,确认它能正常工作:
    bash /home/john/PYTHONS/MASTER.sh
    
    执行后查看日志文件/home/john/PYTHONS/cron_task.log,确认两个Python脚本都正常执行。
  • 查看Cron的运行日志,确认任务是否被触发:
    • 大部分Linux系统可以查看/var/log/cron文件;
    • 用systemd的系统可以执行journalctl -u cron.service查看Cron服务的日志。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:42:07