按計劃執(zhí)行命令對于計算機來說非常重要,因為假如我親自去執(zhí)行一些任務(wù)的話,可能會因為多方面因素不能按時執(zhí)行,所以定時任務(wù)就顯得非常重要了!
cron就是一個能夠執(zhí)行定時任務(wù)的命令,其實該命令本身不難,下面小編帶您詳細了解!
什么是 cron?
cron命令在 Linux 和 Unix 中無處不在,并且經(jīng)常被模仿和重新發(fā)明,以至于它幾乎是定時任務(wù)的通用術(shù)語,它是一種自動化形式,盡管它有不同的實現(xiàn),比如Dillon 的 cron、Vixie 的 cron、chrony,以及類似systemd timersanacron和systemd timers 的變體,但幾十年來,語法和工作流程基本保持不變。
在 Linux 系統(tǒng)上,目錄/var/spool被設(shè)計為用戶不打算直接與之交互的重要但低級文件的中心樞紐,管理的線軸之一/var/spool是cron表或簡稱“crontab”,Linux 系統(tǒng)上的每個用戶都有一個 crontab,用戶可以編輯、查看和刪除他們自己的 crontab,此外,用戶可以使用他們的 crontab 來安排任務(wù)。
編輯定時設(shè)置
您可以使用crontab命令以及-e(用于編輯)參數(shù)來編輯您的 crontab ,默認情況下,大多數(shù)系統(tǒng)調(diào)用vim文本編輯器。
如果你像我一樣不使用 Vim,那么你可以在你的~/.bashrc文件中為自己設(shè)置一個不同的編輯器,我將我的設(shè)置為 Emacs,但您也可以嘗試Nano、Kate或任何您最喜歡的編輯器,該EDITOR環(huán)境變量定義你在終端使用的文本編輯器,而VISUAL你在圖形模式下使用什么編輯變量定義:
export EDITOR=nano
export VISUAL=kate
使用新設(shè)置刷新 shell 會話:
$ source ~/.bashrc
現(xiàn)在您可以使用您喜歡的編輯器編輯您的 crontab:
$ crontab -e
安排任務(wù)
cron命令本質(zhì)上是一個日歷命令,可以cron通過使用五個不同的屬性來判斷您希望作業(yè)運行的頻率:分鐘minute、小時hour、日期date、月份month、工作日weekday。
這些屬性的順序是嚴格的,不一定直觀,但可以將它們視為過濾器或掩碼,默認情況下,您可能會認為所有內(nèi)容都設(shè)置為always或every。
下面的例子將touch /tmp/hello,在全年每一天的每一小時的每一分鐘的運行:
* * * * * touch /tmp/hello
您可以通過為每個屬性設(shè)置特定定義來限制這個包羅萬象的計劃,每半小時執(zhí)行任務(wù):
30 * * * * touch /tmp/hello
您可以使用特定的時間進一步限制此命令,以下任務(wù)在每天凌晨 3:30 運行:
30 3 * * * touch /tmp/hello
定時任務(wù)僅在每個月的第一天運行:
30 3 1 * * touch /tmp/hello
可以使用 1 為 1 月設(shè)置月份,最高為 12 月設(shè)置月份,可以使用 0 設(shè)置星期日,6 設(shè)置星期六,定時任務(wù)在 4 月份的 3:15 運行,僅在星期一:
15 3 * 4 1 touch /tmp/hello
設(shè)置增量
所有這些設(shè)置都與一個值完全匹配,您還可以使用cron表示法在一段時間后運行作業(yè),例如,每 15 分鐘運行一次定時任務(wù):
*/15 * * * * touch /tmp/hello
每三天在上午 10 點運行定時任務(wù):
* 10 */3 * * touch /tmp/hello
每六個小時運行定時任務(wù):
* */6 * * * touch /tmp/hello
Cron 簡寫
現(xiàn)代cron實現(xiàn)為通用計劃添加了方便的速記,這些是:
- @hourly
- @daily
- @weekly
- @monthly
- @yearly or @annually
列出 cron 任務(wù)
使用crontab命令,可以查看計劃cron任務(wù)的列表:
$ crontab -l
15 3 * 4 1 touch /tmp/hello
刪除 crontab
完成 crontab 后,可以使用以下-r選項將其刪除:
$ crontab -r -i
該-i參數(shù)代表交互式,在刪除文件之前,它會提示您進行確認。
cron 可以做什么
cron經(jīng)典用法就是對服務(wù)器資源的備份,如果您的計算機在一天中的大部分時間或整日整夜都處于開機狀態(tài),那么您可以安排對重要分區(qū)進行例行備份,我rdiff-backup每天凌晨 3 點在我的主數(shù)據(jù)分區(qū)上運行一個備份應(yīng)用程序:
$ crontab -l | grep rdiff
* 3 * * * rdiff-backup /data/ /vault/
另一個常見用途是系統(tǒng)維護,在我的 Slackware 桌面上,我每周五下午更新我的本地存儲庫目錄:
$ crontab -l | grep slack
* 14 * * 5 sudo slackpkg update
我還可以每三天在 15:00 運行一個 Ansible 腳本來整理我的下載文件夾:
$ crontab -l | grep ansible
* 15 */ 3 * * ansible-playbook / home / seth / Ansible / cleanup.yaml
對計算環(huán)境的健康進行少量投資會大有幫助,有重復(fù)數(shù)據(jù)刪除腳本、文件大小和/tmp目錄監(jiān)視器、照片調(diào)整器、文件移動器,以及許多您可以安排在后臺運行的瑣碎任務(wù),以幫助保持系統(tǒng)整潔。
記住 cron 設(shè)置
除了想出你為什么需要之外cron,根據(jù)cron我的經(jīng)驗,最困難的事情就是記住它的語法,對自己重復(fù)這個,一遍又一遍,直到你記住它:
Minutes, hours, date, month, weekday.
Minutes, hours, date, month, weekday.
Minutes, hours, date, month, weekday.
-
Linux
+關(guān)注
關(guān)注
87文章
11232瀏覽量
208949 -
UNIX
+關(guān)注
關(guān)注
0文章
296瀏覽量
41423 -
編輯器
+關(guān)注
關(guān)注
1文章
803瀏覽量
31128
發(fā)布評論請先 登錄
相關(guān)推薦
評論