您好,登錄后才能下訂單哦!
這篇文章主要介紹“使用cron調度任務的方法”,在日常操作中,相信很多人在使用cron調度任務的方法問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”使用cron調度任務的方法”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
cron 是一個調度守護進程,它以指定的時間間隔執行任務,這些任務稱為 corn 作業,主要用于自動執行系統維護或管理任務。例如,你可以設置一個 cron 作業來自動執行重復的任務,比如備份數據庫或數據,使用最新的安全補丁更新系統,檢查磁盤空間使用情況,發送電子郵件等等。 cron 作業可以按分鐘、小時、日、月、星期或它們的任意組合運行。
以下是使用 cron 作業的一些優點:
你可以更好地控制作業的運行時間。例如,你可以精確到分鐘、小時、天等。
它消除了為循環任務邏輯而去寫代碼的需要,當你不再需要執行任務時,可以直接關閉它。
作業在不執行時不會占用內存,因此你可以節省內存分配。
如果一個作業執行失敗并由于某種原因退出,它將在適當的時間再次運行。
幸運的是,Fedora Linux 預先配置了運行重要的系統任務來保持系統更新,有幾個實用程序可以運行任務例如 cron、anacron
、at
和 batch
。本文只關注 cron 實用程序的安裝。cron 和 cronie 包一起安裝,cronie 包也提供 cron
服務。
要確定軟件包是否已經存在,使用 rpm
命令:
$ rpm -q cronie Cronie-1.5.2-4.el8.x86_64
如果安裝了 cronie ,它將返回 cronie 包的全名。如果你的系統中沒有安裝,則會顯示未安裝。
使用以下命令安裝:
$ dnf install cronie
cron 作業由 crond 服務來執行,它會讀取配置文件中的信息。在將作業添加到配置文件之前,必須啟動 crond 服務,或者安裝它。什么是 crond 呢?crond 是 cron 守護程序的簡稱。要確定 crond 服務是否正在運行,輸入以下命令:
$ systemctl status crond.service● crond.service - Command Scheduler Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor pre> Active: active (running) since Sat 2021-03-20 14:12:35 PDT; 1 day 21h ago Main PID: 1110 (crond)
如果你沒有看到類似的內容 Active: active (running) since…
,你需要啟動 crond 守護進程。要在當前會話中運行 crond 服務,輸入以下命令:
$ systemctl run crond.service
將其配置為開機自啟動,輸入以下命令:
$ systemctl enable crond.service
如果出于某種原因,你希望停止 crond 服務,按以下方式使用 stop
命令:
$ systemctl stop crond.service
要重新啟動它,只需使用 restart
命令:
$ systemctl restart crond.service
以下是一個 cron 作業的配置細節示例。它定義了一個簡單的 cron 作業,將 git
master 分支的最新更改拉取到克隆的倉庫中:
*/59 * * * * username cd /home/username/project/design && git pull origin master
主要有兩部分:
第一部分是 */59 * * * *
。這表明計時器設置為第 59 分鐘執行一次。(LCTT 譯注:原文此處有誤。)
該行的其余部分是命令,因為它將從命令行運行。 在此示例中,命令本身包含三個部分:
作業將以用戶 username
的身份運行
它將切換到目錄 /home/username/project/design
運行 git
命令拉取 master 分支中的最新更改
如上所述,時間信息是 cron 作業字符串的第一部分,如上所屬。它決定了 cron 作業運行的頻率和時間。它按以下順序包括 5 個部分:
分鐘
小時
一個月中的某天
月份
一周中的某天
下面是一種更圖形化的方式來解釋語法:
.--------------- 分鐘 (0 - 59) | .------------- 小時 (0 - 23) | | .---------- 一月中的某天 (1 - 31) | | | .------- 月份 (1 - 12) 或 jan、feb、mar、apr … | | | | .---- 一周中的某天 (0-6) (周日=0 或 7) | | | | | 或 sun、mon、tue、wed、thr、fri、sat | | | | | * * * * * user-name command-to-be-executed
星號(*
)可以用來替代數字,表示該位置的所有可能值。例如,分鐘位置上的星號會使它每分鐘運行一次。以下示例可能有助于更好地理解語法。
這個 cron 作業將每分鐘運行一次:
* * * * [command]
斜杠表示分鐘的間隔數。下面的示例將每小時運行 12 次,即每 5 分鐘運行一次:
*/5 * * * * [command]
下一個示例將每月的第二天午夜(例如 1 月 2 日凌晨 12:00,2 月 2 日凌晨 12:00 等等):
0 0 2 * * [command]
(LCTT 譯注:關于 cron 時間格式,還有更多格式符號,此處沒有展開)
cron 作業會在后臺運行,它會不斷檢查 /etc/crontab
文件和 /etc/cron.*/
以及 /var/spool/cron/
目錄。每個用戶在 /var/spool/cron/
中都有一個唯一的 crontab 文件。
不應該直接編輯這些 cron 文件。crontab
命令是用于創建、編輯、安裝、卸載和列出 cron 作業的方法。
更酷的是,在創建新文件或編輯現有文件后,你無需重新啟動 cron。
$ crontab -e
這將打開你現有的 crontab 文件,或者創建一個。調用 crontab -e
時,默認情況下會使用 vi
編輯器。注意:要使用 Nano 編輯 crontab 文件,可以設置 EDITOR=nano
環境變量。
使用 -l
選項列出所有 cron 作業。如果需要,使用 -u
選項指定一個用戶。
$ crontab -l$ crontab -u username -l
使用以下命令刪除所有 cron 作業:
$ crontab -r
要刪除特定用戶的作業,你必須以 root 用戶身份運行以下命令:
$ crontab -r -u username
感謝你的閱讀。cron 作業看起來可能只是系統管理員的工具,但它實際上與許多 Web 應用程序和用戶任務有關。
到此,關于“使用cron調度任務的方法”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。