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

linux定時任務(wù)如何判斷文件差異?
Python定時任務(wù)的實(shí)現(xiàn)方式
嵌入式linux 用倒計(jì)時的方式代替定時任務(wù)

如何在SpringBoot項(xiàng)目中實(shí)現(xiàn)動態(tài)定時任務(wù)
定時任務(wù)cron的教學(xué)
求一種SpringBoot定時任務(wù)動態(tài)管理通用解決方案
python定時任務(wù)實(shí)踐

Linux計(jì)劃任務(wù)cron詳解

評論