Crontab Generator 常见问题
Generate cron expressions visually
cron 表达式中的每个字段是什么意思?
Cron 使用 5 个字段:分钟 (0-59)、小时 (0-23)、月份的日期 (1-31)、月份 (1-12) 和星期几 (0-6,星期日=0)。例如,「30 14 * * 5」在每个星期五下午 2:30 运行。使用 * 表示「每个值」,范围如 1-5,列表如 1,15,或步长如 */10。
为什么我的 cron 作业没有运行?
常见问题:1) Cron 守护程序未运行(使用「systemctl status cron」检查),2) 错误用户的 crontab(使用「crontab -l」验证),3) 环境/PATH 差异(使用绝对路径),4) 表达式中的语法错误,5) 没有输出重定向(添加「>> /var/log/job.log 2>&1」以查看错误)。使用「journalctl -u cron」检查系统日志。
如何每 5 分钟运行一次 cron 作业?
使用「*/5 * * * *」。分钟字段中的 */5 意味着「每 5 分钟」(在 :00、:05、:10、:15 等运行)。类似地,*/10 每 10 分钟运行一次,*/15 每 15 分钟运行一次,依此类推。
我可以仅在工作时间运行 cron 作业吗?
可以。对于工作日上午 9 点到下午 5 点每小时:「0 9-17 * * 1-5」。对于工作时间内每 15 分钟:「*/15 9-17 * * 1-5」。小时范围 9-17 和工作日范围 1-5(周一-周五)将执行限制在工作时间。
如何调试失败的 cron 作业?
1) 添加输出重定向:「command >> /tmp/debug.log 2>&1」,2) 检查日志文件以查找错误,3) 手动运行确切的命令进行测试,4) 验证 cron 守护程序正在运行,5) 检查系统日志(journalctl -u cron),6) 确保您对命令和文件使用绝对路径,7) 使用「* * * * * env > /tmp/cron-env.txt」测试环境以查看可用内容。
月份的日期和星期几有什么区别?
当两个字段都被指定时(不是 *),cron 使用 OR 逻辑。「0 0 13 * 5」运行「在第 13 天或星期五」,而不是「在星期五第 13 天」。如果您只想要星期五,使用「0 0 * * 5」。如果您只想要第 13 天,使用「0 0 13 * *」。要获得复杂的日期逻辑,使用检查日期的脚本。