Crontab 提前运行

Crontab 提前运行

我设置了一个 crontab,每 10 分钟运行一次 bash 脚本。但是它运行 shell 脚本太早了。添加脚本后 7 分钟才运行。为什么会这样?我该如何修复?我在下面给出了我的 cron:

*/10 * * * * cd /home/myuser/mydir && bash mybashscript.sh

答案1

这不是 cron 的工作方式。Cron 并不关心您何时对 crontab 进行了更改(这无论如何都没有多大意义),它只关注您希望事情在一天中的哪些特定时间发生。

第一个单元格中的表达式*/10表示:“每 10 分钟(从 0 开始)”。这相当于写入0/10。这意味着无论何时输入此表达式,它都会在每 10 分钟的 10、20、30、40、50 和 00 运行。

如果您希望每 10 分钟奇数次运行,请给出不同的起始值(例如 5),如下所示:5/10。这将在 05、15、25、35、45 和 55 运行。

Crontab大师是测试你的 cron 表达式的好地方。

答案2

这不是 cron 的工作方式。cron 将每小时的第 10 分钟运行 */10。

如果你想让它在特定时间过后运行,请使用交互式at

echo "1" | at now + 7 minutes

at理解复杂的措辞,例如“明天下午 2:00”和“现在 + 20 天”

at请注意,如果您确实希望它在 7 分钟内运行,您可以在 cron 中使用(例如@reboot {script} at now + 7 minutes,在重新启动 7 分钟后启动脚本),但它旨在用于交互或从脚本中使用。

使用时间理解的几种方法at

[CC]YYMMDDhhmm[.ss] 现在 午夜 中午 下午茶时间 上午 下午

现在 + N 分钟/小时/天/周/月/年

相关内容