steveroch-rs Asked: 2020-05-07 02:41:16 +0800 CST2020-05-07 02:41:16 +0800 CST 2020-05-07 02:41:16 +0800 CST 如何使用 anacron 和 cron 来执行 cron 错过的任务? 772 我的 python 脚本需要在每天下午 2 点运行。另一个 python 脚本必须在每天晚上 9 点运行。为此,我设置了 2 个 cronjobs 来在给定时间运行这些脚本: 0 14 * * * python /home/user/unban.py 0 21 * * * python /home/user/ban.py 我知道,要让 cron 成功运行,我的机器必须 24/7 运行。如果在安排 cronjobs 时机器处于脱机状态,我该如何使用 anacron 运行脚本? scripts python cron anacron 1 个回答 Voted Best Answer user535733 2020-05-07T03:59:40+08:002020-05-07T03:59:40+08:00 来自man anacrontab: 周期以天为单位,延迟以分钟为单位。 不幸的是,这意味着 anacron 不适用于确定跳过的每小时工作。 考虑为您的脚本添加更多时间逻辑并使其成为单个脚本: // NOT REAL CODE. Just an example of the logic. currently_banned = am_I_banned?() if 14 <= current_time().hour <= 21 if currently_banned is True: unban() else: do_nothing() else: if currently_banned is False: ban() else: do_nothing() 您可以将单个脚本放在 cron.hourly 中,并且可以在启动时运行该脚本。请记住将脚本添加到您的常规备份架构中。 或者,您可以使用 systemd 计时器/服务组合触发作业,就像系统上的所有其他定期服务一样。Systemd 也可以在重启时触发脚本,Systemd 有一个学习曲线,但我发现学习非常值得。
来自
man anacrontab
:不幸的是,这意味着 anacron 不适用于确定跳过的每小时工作。
考虑为您的脚本添加更多时间逻辑并使其成为单个脚本:
您可以将单个脚本放在 cron.hourly 中,并且可以在启动时运行该脚本。请记住将脚本添加到您的常规备份架构中。
或者,您可以使用 systemd 计时器/服务组合触发作业,就像系统上的所有其他定期服务一样。Systemd 也可以在重启时触发脚本,Systemd 有一个学习曲线,但我发现学习非常值得。