From 40ec452f85c3bf0e0beb0fb3d61507c24d0be7f5 Mon Sep 17 00:00:00 2001 From: wxy Date: Thu, 8 Jun 2017 23:04:37 +0800 Subject: [PATCH] PRF&PUB:20170601 Cron Vs Anacron How to Schedule Jobs Using Anacron on Linux @geekpi --- ...to Schedule Jobs Using Anacron on Linux.md | 52 +++++++++---------- 1 file changed, 25 insertions(+), 27 deletions(-) rename {translated/tech => published}/20170601 Cron Vs Anacron How to Schedule Jobs Using Anacron on Linux.md (60%) diff --git a/translated/tech/20170601 Cron Vs Anacron How to Schedule Jobs Using Anacron on Linux.md b/published/20170601 Cron Vs Anacron How to Schedule Jobs Using Anacron on Linux.md similarity index 60% rename from translated/tech/20170601 Cron Vs Anacron How to Schedule Jobs Using Anacron on Linux.md rename to published/20170601 Cron Vs Anacron How to Schedule Jobs Using Anacron on Linux.md index 5476431102..a7ed896cf0 100644 --- a/translated/tech/20170601 Cron Vs Anacron How to Schedule Jobs Using Anacron on Linux.md +++ b/published/20170601 Cron Vs Anacron How to Schedule Jobs Using Anacron on Linux.md @@ -1,15 +1,15 @@ -cron VS anacron:如何在 Linux 中计划任务 +cron 与 anacron:如何在 Linux 中计划任务 ============================================================ 在本篇中,我们会解释 cron 和 anacron,并向你展示如何在 Linux 中设置 anacron。我们也会比较这两个工具。 -要[在一个给定时间或者稍后安排一个任务][1],你可以使用 “at” 或者 “batch” 命令,要使命令能够重复运行,你可以使用 cron 以及 anacron 工具。 +要[在一个给定时间或者稍后安排一个任务][1],你可以使用 `at` 或者 `batch` 命令,要使命令能够重复运行,你可以使用 cron 以及 anacron 工具。 [cron][2] - 是一个用于运行计划任务如系统备份、更新等的守护进程。它适合在那些 24X7 不间断运行的机器如服务器上运行的计划任务。 -命令/脚本被写在 cron 任务脚本中,它是在 crontab 文件中被安排的。系统默认的 crontab 文件是 /etc/crontab,但是每个用户也可以创建自己的 crontab 文件来在特定时间运行用户定义的命令。 +命令/脚本被写在 cron 任务脚本中,它是在 `crontab` 文件中被安排的。系统默认的 `crontab` 文件是 `/etc/crontab`,但是每个用户也可以创建自己的 `crontab` 文件来在特定时间运行用户定义的命令。 -要创建一份个人 crontab 文件,只要输入: +要创建一份个人 `crontab` 文件,只要输入: ``` $ crontab -e @@ -17,17 +17,17 @@ $ crontab -e ### 如何在 Linux 中设置 anacron -anacron 用于以天为单位的频率运行命令。它的工作与 cron 稍有不同,它假设机器不会一直开机。 +anacron 用于以天为单位的频率运行命令。它的工作与 cron 稍有不同,**它假设机器不会一直开机**。 -cron 也适合在那些不会 24X7 运行如笔记本以及桌面电脑的机器上运行每日、每周以及每月的计划任务。 +cron 也适合在那些不会 24X7 运行如笔记本以及桌面电脑的机器上运行每日、每周以及每月的计划任务(LCTT 译注:不适合按小时、分钟执行任务)。 假设你有一个计划任务(比如备份脚本)要使用 cron 在每天半夜运行,也许你以及睡着,那时你的桌面/笔记本电脑已经关机。你的备份脚本就不会被运行。 -然而,如果你使用 anacron,你可以确认在你下次开启桌面/笔记本电脑的时候,备份脚本就会被执行。 +然而,如果你使用 anacron,你可以确保在你下次开启桌面/笔记本电脑的时候,备份脚本会被执行。 ### anacron 如何在 Linux 工作 -anacron 任务被列在 /etc/anacrontab 中,任务可以使用下面的格式( anacron 文件中的注释必须以 # 号开始)安排。 +anacron 任务被列在 `/etc/anacrontab` 中,任务可以使用下面的格式(anacron 文件中的注释必须以 `#` 号开始)安排。 ``` period delay job-identifier command @@ -35,11 +35,10 @@ period delay job-identifier command 从上面的格式中: -* period - 这是任务的频率,以天来指定,或者是 @daily、@weekly、@monthly 代表每天、每周、每月一次。你也可以使用数字:1 - 每天、7 - 每周、30 - 每月,或者 N - 几天。 - -* delay - 这是在执行一个任务前等待的分钟数。 - -* job-id - 这是写在日志文件中任务的独特名字。 +* `period` - 这是任务的频率,以天来指定,或者是 `@daily`、`@weekly`、`@monthly` 代表每天、每周、每月一次。你也可以使用数字:`1` - 每天、`7` - 每周、`30` - 每月,或者 `N` - 几天。 +* `delay` - 这是在执行一个任务前等待的分钟数。 +* `job-id` - 这是写在日志文件中任务的独特名字。 +* `command` - 这是要执行的命令或 shell 脚本。 要浏览示例文件,输入: @@ -51,31 +50,29 @@ total 12 -rw------- 1 root root 9 May 30 10:28 cron.weekly ``` -* command - 这是要执行的命令或 shell 脚本。 +这是实际发生的: -##### 这是实际发生的: +* anacron 会检查任务是否已经在 `period` 字段指定的时间被被执行了。如果没有,则在等待 `delay` 字段中指定的分钟数后,执行 `command` 字段中指定的命令。 +* 一旦任务被执行了,它会使用 `job-id`(时间戳文件名)字段中指定的名称将日期记录在 `/var/spool/anacron` 目录中的时间戳文件中。 -* anacron 会检查任务是否已经在 period 字段指定的时间被被执行了。如果没有,则在等待 delay 字段中指定的分钟数后,执行 command 字段中指定的命令。 - -* 一旦任务被执行了,它会使用 job-id(timestamp 文件名)字段中指定的名称将日期记录在 /var/spool/anacrondirectory 中的时间戳文件中。 - -现在让我们看一个例子。这个会每天运行 /home/aaronkilik/bin/backup.sh 脚本: +现在让我们看一个例子。这个会每天运行 `/home/aaronkilik/bin/backup.sh` 脚本: ``` @daily 10 example.daily /bin/bash /home/aaronkilik/bin/backup.sh ``` -当机器在 backup.sh 期望被运行时是关机的,anacron 会在机器开机十分钟之后运行它,而不用再等待 7 天。 +当机器在 `backup.sh` 期望被运行时是关机的,anacron 会在机器开机十分钟之后运行它,而不用再等待 7 天。 这里有两个你应该理解的 anacrontab 文件的重要变量: -* START_HOURS_RANGE - 这个设置任务开始运行的时间范围(也就是任务只在这几个小时内运行)。 +* `START_HOURS_RANGE` - 这个设置任务开始运行的时间范围(也就是任务只在这几个小时内运行)。 -* RANDOM_DELAY - 这定义添加到用户定义的任务延迟的最大随机延迟(默认为45)。 +* `RANDOM_DELAY` - 这定义添加到用户定义的任务延迟的最大随机延迟(默认为 45)。 这是你的 anacrontab 文件可能看上去的样子。 -Anacron – /etc/anacrontab File +Anacron – `/etc/anacrontab`: + ``` # /etc/anacrontab: configuration file for anacron # See anacron(8) and anacrontab(5) for details. @@ -93,9 +90,10 @@ LOGNAME=root 下面是 cron 以及 anacron 的比较,帮助你理解何时用他们其中一个。 | cron | anacron | +|------|---------| | 它是守护进程 | 它不是守护进程 | | 适合服务器 | 适合桌面/笔记本电脑 | -| 可以让你以分钟运行计划任务 | 只能让你以天为基础来运行计划任务 | +| 可以让你以分钟级运行计划任务 | 只能让你以天为基础来运行计划任务 | | 关机时不会执行计划任务 | 如果计划任务到期,机器是关机的,那么它会在机器下次开机后执行计划任务 | | 普通用户和 root 用户都可以使用 | 只有 root 用户可以使用(使用特定的配置启动普通任务) | @@ -113,9 +111,9 @@ Aaron Kili 是一个 Linux 和 F.O.S.S 爱好者、Linux 系统管理员、网 via: https://www.tecmint.com/cron-vs-anacron-schedule-jobs-using-anacron-on-linux/ -作者:[Aaron Kili | ][a] +作者:[Aaron Kili][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出