Linux / Docker 定时任务配置教程

一、定时任务类型

二、语法格式

# 用户 crontab 示例(无需用户名)
0 7 * * * /tmp/weather.sh >> /tmp/logs/weather.log 2>&1

# 系统 cron.d 示例(必须加用户名)
appuser 0 7 * * * /tmp/weather.sh >> /tmp/logs/weather.log 2>&1
    

时间字段含义:

三、Dockerfile 中的配置方式

用户 crontab(推荐用于非 root 用户)

COPY crontab.appuser /tmp/crontab.appuser
RUN crontab -u appuser /tmp/crontab.appuser
    

系统 cron.d(推荐用于 root 用户)

COPY crontab.root /etc/cron.d/root-cron
RUN chmod 0644 /etc/cron.d/root-cron
    

注意:cron.d 文件每行必须以用户名开头,否则会出现 bad username 错误。

四、日志输出建议

建议所有定时任务都添加日志输出:

/tmp/script.sh >> /tmp/logs/script.log 2>&1
    

这样可以在 /tmp/logs 中查看每个任务的执行结果。

五、常见问题排查