按計(jì)劃執(zhí)行命令對于計(jì)算機(jī)來說非常重要,因?yàn)榧偃缥矣H自去執(zhí)行一些任務(wù)的話,可能會(huì)因?yàn)槎喾矫嬉蛩夭荒馨磿r(shí)執(zhí)行,所以定時(shí)任務(wù)就顯得非常重要了!
cron就是一個(gè)能夠執(zhí)行定時(shí)任務(wù)的命令,其實(shí)該命令本身不難,下面小編帶您詳細(xì)了解!
什么是 cron?
cron命令在 Linux 和 Unix 中無處不在,并且經(jīng)常被模仿和重新發(fā)明,以至于它幾乎是定時(shí)任務(wù)的通用術(shù)語,它是一種自動(dòng)化形式,盡管它有不同的實(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)上的每個(gè)用戶都有一個(gè) crontab,用戶可以編輯、查看和刪除他們自己的 crontab,此外,用戶可以使用他們的 crontab 來安排任務(wù)。
編輯定時(shí)設(shè)置
您可以使用crontab命令以及-e(用于編輯)參數(shù)來編輯您的 crontab ,默認(rèn)情況下,大多數(shù)系統(tǒng)調(diào)用vim文本編輯器。
如果你像我一樣不使用 Vim,那么你可以在你的~/.bashrc文件中為自己設(shè)置一個(gè)不同的編輯器,我將我的設(shè)置為 Emacs,但您也可以嘗試Nano、Kate或任何您最喜歡的編輯器,該EDITOR環(huán)境變量定義你在終端使用的文本編輯器,而VISUAL你在圖形模式下使用什么編輯變量定義:
export EDITOR=nano
export VISUAL=kate
使用新設(shè)置刷新 shell 會(huì)話:
$ source ~/.bashrc
現(xiàn)在您可以使用您喜歡的編輯器編輯您的 crontab:
$ crontab -e
安排任務(wù)
cron命令本質(zhì)上是一個(gè)日歷命令,可以cron通過使用五個(gè)不同的屬性來判斷您希望作業(yè)運(yùn)行的頻率:分鐘minute、小時(shí)hour、日期date、月份month、工作日weekday。
這些屬性的順序是嚴(yán)格的,不一定直觀,但可以將它們視為過濾器或掩碼,默認(rèn)情況下,您可能會(huì)認(rèn)為所有內(nèi)容都設(shè)置為always或every。
下面的例子將touch /tmp/hello,在全年每一天的每一小時(shí)的每一分鐘的運(yùn)行:
* * * * * touch /tmp/hello
您可以通過為每個(gè)屬性設(shè)置特定定義來限制這個(gè)包羅萬象的計(jì)劃,每半小時(shí)執(zhí)行任務(wù):
30 * * * * touch /tmp/hello
您可以使用特定的時(shí)間進(jìn)一步限制此命令,以下任務(wù)在每天凌晨 3:30 運(yùn)行:
30 3 * * * touch /tmp/hello
定時(shí)任務(wù)僅在每個(gè)月的第一天運(yùn)行:
30 3 1 * * touch /tmp/hello
可以使用 1 為 1 月設(shè)置月份,最高為 12 月設(shè)置月份,可以使用 0 設(shè)置星期日,6 設(shè)置星期六,定時(shí)任務(wù)在 4 月份的 3:15 運(yùn)行,僅在星期一:
15 3 * 4 1 touch /tmp/hello
設(shè)置增量
所有這些設(shè)置都與一個(gè)值完全匹配,您還可以使用cron表示法在一段時(shí)間后運(yùn)行作業(yè),例如,每 15 分鐘運(yùn)行一次定時(shí)任務(wù):
*/15 * * * * touch /tmp/hello
每三天在上午 10 點(diǎn)運(yùn)行定時(shí)任務(wù):
* 10 */3 * * touch /tmp/hello
每六個(gè)小時(shí)運(yùn)行定時(shí)任務(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ù)代表交互式,在刪除文件之前,它會(huì)提示您進(jìn)行確認(rèn)。
cron 可以做什么
cron經(jīng)典用法就是對服務(wù)器資源的備份,如果您的計(jì)算機(jī)在一天中的大部分時(shí)間或整日整夜都處于開機(jī)狀態(tài),那么您可以安排對重要分區(qū)進(jìn)行例行備份,我rdiff-backup每天凌晨 3 點(diǎn)在我的主數(shù)據(jù)分區(qū)上運(yùn)行一個(gè)備份應(yīng)用程序:
$ crontab -l | grep rdiff
* 3 * * * rdiff-backup /data/ /vault/
另一個(gè)常見用途是系統(tǒng)維護(hù),在我的 Slackware 桌面上,我每周五下午更新我的本地存儲(chǔ)庫目錄:
$ crontab -l | grep slack
* 14 * * 5 sudo slackpkg update
我還可以每三天在 15:00 運(yùn)行一個(gè) Ansible 腳本來整理我的下載文件夾:
$ crontab -l | grep ansible
* 15 */ 3 * * ansible-playbook / home / seth / Ansible / cleanup.yaml
對計(jì)算環(huán)境的健康進(jìn)行少量投資會(huì)大有幫助,有重復(fù)數(shù)據(jù)刪除腳本、文件大小和/tmp目錄監(jiān)視器、照片調(diào)整器、文件移動(dòng)器,以及許多您可以安排在后臺(tái)運(yùn)行的瑣碎任務(wù),以幫助保持系統(tǒng)整潔。
記住 cron 設(shè)置
除了想出你為什么需要之外cron,根據(jù)cron我的經(jīng)驗(yàn),最困難的事情就是記住它的語法,對自己重復(fù)這個(gè),一遍又一遍,直到你記住它:
Minutes, hours, date, month, weekday.
Minutes, hours, date, month, weekday.
Minutes, hours, date, month, weekday.
-
Linux
+關(guān)注
關(guān)注
87文章
11351瀏覽量
210493 -
UNIX
+關(guān)注
關(guān)注
0文章
296瀏覽量
41604 -
編輯器
+關(guān)注
關(guān)注
1文章
806瀏覽量
31302
發(fā)布評論請先 登錄
相關(guān)推薦
Linux系統(tǒng)定時(shí)任務(wù)Crond
嵌入式linux是如何去實(shí)現(xiàn)定時(shí)任務(wù)的
busybox用crontab/crond在嵌入式系統(tǒng)中添加定時(shí)任務(wù)的方法
Linux操作系統(tǒng)定時(shí)任務(wù)系統(tǒng)Cron入門分析
PHP簡單實(shí)現(xiàn)不依賴于Unix系統(tǒng)Cron的定時(shí)任務(wù)程序資料說明
![PHP簡單實(shí)現(xiàn)不依賴于Unix系統(tǒng)<b class='flag-5'>Cron</b>的<b class='flag-5'>定時(shí)任務(wù)</b>程序資料說明](https://file.elecfans.com/web1/M00/86/7A/pIYBAFx49aqAcv0jAALH5cX1jD0649.png)
linux定時(shí)任務(wù)如何判斷文件差異?
Python定時(shí)任務(wù)的實(shí)現(xiàn)方式
嵌入式linux 用倒計(jì)時(shí)的方式代替定時(shí)任務(wù)
![嵌入式<b class='flag-5'>linux</b> 用倒計(jì)時(shí)的方式代替<b class='flag-5'>定時(shí)任務(wù)</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
如何在SpringBoot項(xiàng)目中實(shí)現(xiàn)動(dòng)態(tài)定時(shí)任務(wù)
定時(shí)任務(wù)cron的教學(xué)
求一種SpringBoot定時(shí)任務(wù)動(dòng)態(tài)管理通用解決方案
python定時(shí)任務(wù)實(shí)踐
![python<b class='flag-5'>定時(shí)任務(wù)</b>實(shí)踐](https://file1.elecfans.com/web2/M00/88/7C/wKgaomRomG6AUjP_AAAoyI8SDqQ776.jpg)
linux定時(shí)任務(wù)的用法總結(jié)
![<b class='flag-5'>linux</b><b class='flag-5'>定時(shí)任務(wù)</b>的用法總結(jié)](https://file1.elecfans.com/web2/M00/03/80/wKgaoma8hC6AWmDxAABM_AijTcU560.png)
Linux計(jì)劃任務(wù)cron詳解
![<b class='flag-5'>Linux</b>計(jì)劃<b class='flag-5'>任務(wù)</b><b class='flag-5'>cron</b>詳解](https://file1.elecfans.com/web3/M00/07/69/wKgZPGelt2iAG72cAAA2zqMhwEA362.png)
評論