Anacron是Rocky Linux的自動化命令執(zhí)行工具,能夠幫助用戶在未全天候開啟的計算機上定期執(zhí)行命令,適合工作方式具有非連續(xù)性的計算機(如筆記本電腦和臺式計算機)。本教程主要介紹Anacron概念及使用方法。
一、先決條件
在開始使用 Anacron 之前,請確保具備以下條件:
1、一臺運行 Rocky Linux 的計算機。
2、了解如何使用最喜歡的編輯器(例如 “vim”)來修改命令行環(huán)境中的配置文件。
3、基礎(chǔ)的 RPM 軟件包管理知識。
4、掌握 、Python 或其他腳本/編程工具的使用,想要運行自動化腳本。
5、已以 root 用戶身份登錄,或使用 “su” 切換到 root 用戶。
二、Anacron介紹
Anacron 定期運行命令,運行頻率以天為單位,非常適合不全天候工作的計算機。例如每天早上需要通過 “crontab” 執(zhí)行一個備份腳本,但臺式機或筆記本電腦在睡覺時是關(guān)閉的,那么在下次開機時,Anacron 將確保該備份腳本能夠自動執(zhí)行。可以說,Anacron 并不是為了取代 crontab,而是對其功能的有力補充。兩者關(guān)系如下圖:
三、配置文件
shell > rpm -ql cronie-anacron /etc/anacrontab /etc/cron.hourly/0anacron /usr/lib/.build-id /usr/lib/.build-id/0e /usr/lib/.build-id/0e/6b094fa55505597cb69dc5a6b7f5f30b04d40f /usr/sbin/anacron /usr/share/man/man5/anacrontab.5.gz /usr/share/man/man8/anacron.8.gz /var/spool/anacron /var/spool/anacron/cron.daily /var/spool/anacron/cron.monthly /var/spool/anacron/cron.weekly
首先檢查默認配置文件:
shell > cat /etc/anacrontab # /etc/anacrontab: configuration file for anacron # See anacron(8) and anacrontab(5) for details. SHELL=/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # 每個指定作業(yè)的默認延遲為45分鐘,隨機增加0-45分鐘。 RANDOM_DELAY=45 # 指定工作時間范圍 比如如下示例代表 3:00~22:00 START_HOURS_RANGE=3-22 # 作業(yè)標識符命令的延遲時間(以天為單位) # 每天啟動來檢查目錄 /etc/cron.daily 文件在5分鐘內(nèi)被執(zhí)行, 若今日沒有執(zhí)行, 則推遲到下一次執(zhí)行 1 5 cron.daily nice run-parts /etc/cron.daily # 啟動后檢查 /etc/cron.weekly 目錄,每7天在25分鐘內(nèi)執(zhí)行一次,若一周內(nèi)未執(zhí)行,則將在下一次執(zhí)行 7 25 cron.weekly nice run-parts /etc/cron.weekly # 啟動后檢查 /etc/cron.monthly 目錄中的文件, 每月45分鐘內(nèi)執(zhí)行一次 @monthly 45 cron.monthly nice run-parts /etc/cron.monthly
/etc/cron.hourly/ 通過 journalctl -u crond.service,,可以知道放在此文件夾內(nèi)的文件實際上是被 crond.server 服務(wù)調(diào)用的。 因此這些命令將在每小時第一分鐘后執(zhí)行。 例如:
shell > cat /etc/cron.d/0hourly # 每小時執(zhí)行任務(wù) SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root 01 * * * * root run-parts /etc/cron.hourly
shell > journalctl -u crond.service - Logs begin at Wed 2021-10-20 19:27:39 CST, end at Wed 2021-10-2023:32:42 CST. October 20 19:27:42 li systemd[1]: Started Command Scheduler. October 20 19:27:42 li crond[733]: (CRON) STARTUP (1.5.2) October 20 19:27:42 li crond[733]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 76% if used.) October 20 19:27:42 li crond[733]: (CRON) INFO (running with inotify support) October 20 20:01:01 li CROND[1897]: (root) CMD (run-parts /etc/cron.hourly) October 20 21:01:01 li CROND[1922]: (root) CMD (run-parts /etc/cron.hourly) October 20 22:01:01 li CROND[1947]: (root) CMD (run-parts /etc/cron.hourly) October 20 23:01:01 li CROND[2037]: (root) CMD (run-parts /etc/cron.hourly) October 20 19:27:42 li systemd[1]: Started Command Scheduler. October 20 19:27:42 li crond[733]: (CRON) STARTUP (1.5.2) October 20 19:27:42 li crond[733]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 76% if used.) October 20 19:27:42 li crond[733]: (CRON) INFO (running with inotify support) October 20 20:01:01 li CROND[1897]: (root) CMD (run-parts /etc/cron.hourly) October 20 21:01:01 li CROND[1922]: (root) CMD (run-parts /etc/cron.hourly) October 20 22:01:01 li CROND[1947]: (root) CMD (run-parts /etc/cron.hourly) October 20 23:01:01 li CROND[2037]: (root) CMD (run-parts /etc/cron.hourly)
四、用戶使用
要使某些文件在指定的時間內(nèi)運行,需要將腳本文件復制到相應(yīng)的目錄,并確保它們具有執(zhí)行權(quán)限(使用 “chmod +x” 命令)。這讓系統(tǒng)能夠在設(shè)定的時間范圍內(nèi)自動運行腳本,從而簡化了計劃任務(wù)的運行。
讓我們使用 cron.daily 文件來說明 /etc/anacrontab的執(zhí)行過程:
1、anacron 讀取 /var/spool/anacron/cron.daily 文件, 對應(yīng)文件內(nèi)容顯示最后一次執(zhí)行時間.
2、與當前時間相比,如果二者相差達到1天,那么corn.daily將被執(zhí)行。
3、此任務(wù)只能在 03:00-22:00進行。
4、檢查一個文件是否在系統(tǒng)啟動后5分鐘內(nèi)執(zhí)行。 當?shù)谝粋€文件被執(zhí)行后,將會隨機延遲0~45分鐘來執(zhí)行第二個。
5、使用nice參數(shù)指定默認優(yōu)先級,并使用run-parts參數(shù)運行/etc/cron.daily/目錄中的所有可執(zhí)行文件。
五、相關(guān)命令
以下是一些常用的 Anacron 命令及其參數(shù)說明:
參數(shù) | 說明 |
---|---|
-f | 執(zhí)行所有作業(yè),忽略時間戳 |
-u | 將時間戳更新到當前時間,而不執(zhí)行任何操作 |
-T | 測試配置文件/etc/anacrontab 是否有效 |