anacron 命令选项 -n 和 -f 之间的区别

anacron 命令选项 -n 和 -f 之间的区别

我目前正在使用 Ubuntu 20.04。我的疑问与 anacron 命令选项-n和有关-f

该命令是否anacron -n运行 anacron 中安排的所有作业(每日、每周和每月)还是仅运行安排在今天运行的作业?我得到了该命令的以下输出sudo anacron -n -d

Anacron 2.3 started on 2023-04-01
Normal exit (0 jobs run)

我得到了该命令的以下输出sudo anacron -f -d

Anacron 2.3 started on 2023-04-01
Will run job `cron.daily' in 5 min.
Will run job `cron.weekly' in 10 min.
Will run job `cron.monthly' in 15 min.

此外,当我结合-n-f选项时,所有作业都开始运行,而无需考虑延迟。

有人知道使用 anacron 命令时这两个选项究竟有何不同吗?

答案1

一般来说,anacron 的工作方式是,它只执行在给定“时间跨度”内尚未执行的作业(每小时日常的每周每月)。

因此,如果你在一周内第一次运行 anacron,它将运行计划的任务每小时日常的每周。如果您在之后立即运行它,则不会运行任何任务。如果您在一小时后运行它,则只有计划于每小时将运行等等

为了跟踪这一点,anacron 会为每次运行的作业保存一个时间戳。只有当计划的“时间跨度”超过时间戳时,作业才会再次运行。

现在-n-f选项在anacron 手册页,它们做了两件截然不同的事情。

  • -f选项强制(重新)运行所有作业,忽略时间戳。这意味着如果你使用该选项连续多次运行 anacron -f,它将重新运行全部作业 - 包括那些计划只运行的作业日常的每周每月

  • -n选项告诉 anacron 立即运行相关作业,考虑时间戳,但忽略设置的延迟/etc/anacrontab。默认延迟(从您的输出中可以看出):

    • cron.daily- 5分钟
    • cron.weekly- 10分钟
    • cron.monthly- 15分钟

    此外,该-n选项还包括-s选项,以便作业按顺序(一个接一个)运行,而不是并行运行每个“时间跨度”的作业。

我认为用表格来概括是最清楚的:

选项 强制使用时间戳 强制延迟 串行执行
没有任何 是的 是的
-s 是的 是的 是的
-n 是的 是的
-f 是的
-fs 是的 是的
-fn 是的

相关内容