如何使用 cron 每天仅运行一次脚本而不指定执行时间

如何使用 cron 每天仅运行一次脚本而不指定执行时间

我想每天运行一次备份脚本,但我不想指定某个时间,每天只运行一次。我读到 @daily cron 属性每天 00:00 运行,但我不知道接收服务器是否会在此时启动。

是否可以配置cron为每天只运行一次此脚本,而不管时间如何?或者运行脚本直到成功,然后第二天再试一次?

@reboot 是一个选项,但是发送端可能每天重新启动几次,在这种情况下会导致不必要的备份。

答案1

您可能想要使用 anacron。

从其手册页

NAME
       anacron - runs commands periodically

SYNOPSIS
       anacron [-s] [-f] [-n] [-d] [-q] [-t anacrontab] [-S spooldir] [job] ...
       anacron [-S spooldir] -u [-t anacrontab] [job] ...
       anacron [-V|-h]
       anacron -T [-t anacrontab]

DESCRIPTION
       Anacron  can  be  used  to  execute  commands periodically, with a frequency specified in days.  Unlike
       cron(8), it does not assume that the machine is  running  continuously.   Hence,  it  can  be  used  on
       machines  that  aren't running 24 hours a day, to control daily, weekly, and monthly jobs that are usu‐
       ally controlled by cron.

Ubuntu 社区 HowTo:https://help.ubuntu.com/community/CronHowto

使用 anacron:

  1. 只需将可执行脚本文件放在/etc/cron.hourly/etc/cron.daily或中/etc/cron.weekly即可/etc/cron.monthly

  2. 触摸脚本文件:

    sudo touch /etc/cron.daily/scriptfile
    

    cron.daily如果这是一份日常工作)。

测试 anacron:

sudo anacron -f -d
   -f     Force execution of the jobs, ignoring the timestamps.
   -d     Don’t fork to the background.  In this mode, Anacron will output
          informational  messages to standard error, as well as to syslog.
          The output of jobs is mailed as usual.

日志中的 Anacron 消息:

grep anacron /var/log/syslog

Anacron 在 中保存时间戳/var/spool/anacron/。如果您从其中删除cron.dailycron.weeklycron.monthly文件,anacron 将在下次启动时执行每日、每周或每月脚本。

答案2

按原样使用@daily,但同时添加@reboot。@reboot 将在您启动时运行脚本。

@reboot /full_path/to/script

Ubuntu 维基 cron了解更多信息。

相关内容