首頁 > 系統教程 > Linux > 主體

學習如何在Linux中配置計劃任務:使用cron和anacron

王林
發布: 2024-01-15 11:33:05
轉載
915 人瀏覽過
導讀 在本篇中,我們會解釋 cron 和 anacron,並向你展示如何在 Linux 中設定 anacron。我們也會比較這兩個工具。

Linux 中怎么设置计划任务:cron 与 anacron

#cron 在 Linux 設定

cron - 是一個用於執行排程任務如係統備份、更新等的守護程式。它適合在那些 24X7 不間斷運作的機器如伺服器上執行的排程任務。

指令/腳本被寫在 cron 任務腳本中,它是在crontab 檔案中被安排的。系統預設的 cromtab 檔案是/etc/crontab ,但每個使用者也可以建立自己的 cromtab 檔案來在特定時間執行使用者定義的命令。

要建立一份個人crontab 文件,只要輸入:

$ crontab -e
登入後複製

Linux 中怎么设置计划任务:cron 与 anacron

#如何在 Linux 中設定 anacron

anacron 用於以天為單位的頻率運行指令。它的工作與 cron 稍有不同,它假設機器不會一直開機

cron 也適合在那些不會 24X7 運行如筆記本以及桌面電腦的機器上運行每日、每週以及每月的計劃任務(LCTT 譯註:不適合按小時、分鐘執行任務)。

假設你有一個計劃任務(例如備份腳本)要使用 cron 在每天半夜運行,也許你以及睡著,那時你的桌面/筆記型電腦已經關機。你的備份腳本就不會被執行。

然而,如果你使用 anacron,你可以確保在下次開​​啟桌面/筆記型電腦的時候,備份腳本會被執行。

anacron 如何在 Linux 工作

anacron 任務被列在 /etc/anacrontab 中,任務可以使用下面的格式(anacron 檔案中的註解必須以 # 號開始)安排。

period   delay   job-identifier   command
登入後複製

從上面的格式:

  • period - 這是任務的頻率,以天來指定,或是@daily@weekly@monthly代表每天、每週、每月一次。你也可以使用數字:1 - 每天、7 - 每週、30- 每月,或N - 幾天。
  • delay - 這是在執行一個任務前等待的分鐘數。
  • job-id - 這是寫在日誌檔案中任務的獨特名字。
  • command - 這是要執行的命令或 shell 腳本。

要瀏覽範例文件,輸入:

$ ls -l /var/spool/anacron/
total 12
-rw------- 1 root root 9 Jun  1 10:25 cron.daily
-rw------- 1 root root 9 May 27 11:01 cron.monthly
-rw------- 1 root root 9 May 30 10:28 cron.weekly
登入後複製

這是實際發生的:

  • anacron 会检查任务是否已经在 period 字段指定的时间被被执行了。如果没有,则在等待 delay 字段中指定的分钟数后,执行 command字段中指定的命令。
  • 一旦任务被执行了,它会使用 job-id (时间戳文件名)字段中指定的名称将日期记录在 /var/spool/anacron 目录中的时间戳文件中。

现在让我们看一个例子。这个会每天运行 /home/aaronkilik/bin/backup.sh 脚本:

 @daily    10    example.daily   /bin/bash /home/aaronkilik/bin/backup.sh
登入後複製

当机器在 backup.sh 期望被运行时是关机的,anacron 会在机器开机十分钟之后运行它,而不用再等待 7 天。

这里有两个你应该理解的 anacrontab 文件的重要变量:

  • START_HOURS_RANGE - 这个设置任务开始运行的时间范围(也就是任务只在这几个小时内运行)。
  • RANDOM_DELAY - 这定义添加到用户定义的任务延迟的最大随机延迟(默认为 45)。

这是你的 anacrontab 文件可能看上去的样子。

Anacron – /etc/anacrontab

# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
HOME=/root
LOGNAME=root
# These replace cron's entries
1       5       cron.daily      run-parts --report /etc/cron.daily
7       10      cron.weekly     run-parts --report /etc/cron.weekly
@monthly        15      cron.monthly    run-parts --report /etc/cron.monthly
@daily    10    example.daily   /bin/bash /home/aaronkilik/bin/backup.sh                                                                      
登入後複製

下面是 cron 以及 anacron 的比较,帮助你理解何时用他们其中一个。

cron anacron
它是守护进程 它不是守护进程
适合服务器 适合桌面/笔记本电脑
可以让你以分钟级运行计划任务 只能让你以天为基础来运行计划任务
关机时不会执行计划任务 如果计划任务到期,机器是关机的,那么它会在机器下次开机后执行计划任务
普通用户和 root 用户都可以使用 只有 root 用户可以使用(使用特定的配置启动普通任务)

cron 和 anacron 主要的區別在於 cron 能在那些持續運行的機器上有效地運行,而 anacron 是針對那些會在一天內或一周內會關機的機器。

如果你還知道其他方式,請在評論欄中與我們分享。

原文網址: https://www.tecmint.com/cron-vs-anacron-schedule-jobs-using-anacron-on-linux/‎

本文網址: https://www.linuxprobe.com/cron-anacron-work.html編輯:張雄,審核者:逄增寶

本文原始網址:https://www.linuxprobe.com/cron-anacron-work.html編輯:問題終結者,審核員:暫無

#為您推薦一些與本文相關的文章:

  • SUSE Linux 的Zypper套件管理器使用實例
  • Swift筆記之變數講解
  • 《Angular開發實戰》pdf版電子書免費下載
  • RSS 文法概述
  • 《Spark快速大數據分析第2版》pdf電子書免費下載
  • 在Ubuntu 上安裝Memcached
  • awk指令的多種用法
  • Go泛型基礎使用
  • 如何使用Python 或Bash動態產生Jekyll 設定檔
  • 讓Linux 保持精確時間

以上是學習如何在Linux中配置計劃任務:使用cron和anacron的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:linuxprobe.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板