Linux下使用cron系統(tǒng)服務(wù)定時(shí)執(zhí)行任務(wù)
Linux系統(tǒng)中有很多的系統(tǒng)級(jí)任務(wù)在后臺(tái)自動(dòng)執(zhí)行,而負(fù)責(zé)調(diào)度這些任務(wù)的便是cron服務(wù)的守護(hù)進(jìn)程crond,當(dāng)我們需要定時(shí)執(zhí)行自己的任務(wù)時(shí)便可以將所要執(zhí)行的任務(wù)加入到crond的任務(wù)列表中來(lái)讓cron
Linux系統(tǒng)中有很多的系統(tǒng)級(jí)任務(wù)在后臺(tái)自動(dòng)執(zhí)行,而負(fù)責(zé)調(diào)度這些任務(wù)的便是cron服務(wù)的守護(hù)進(jìn)程crond,當(dāng)我們需要定時(shí)執(zhí)行自己的任務(wù)時(shí)便可以將所要執(zhí)行的任務(wù)加入到crond的任務(wù)列表中來(lái)讓crond自行調(diào)度執(zhí)行,接下來(lái)便為大家介紹如何來(lái)讓crond自動(dòng)執(zhí)行我們的任務(wù)。
確定任務(wù)和編寫(xiě)腳本
首先,我們要確定所要執(zhí)行的任務(wù)。如果任務(wù)比較簡(jiǎn)單的話(huà)盡量使用單行命令直接搞定。如果任務(wù)比較復(fù)雜的話(huà)便要編寫(xiě)Shell腳本,通過(guò)crond調(diào)用該腳本來(lái)執(zhí)行。這一步相當(dāng)重要,要反復(fù)確定最終的命令或腳本能夠準(zhǔn)確地完成我們的任務(wù)。
編輯任務(wù)調(diào)度表
使用`crontab -e`命令編輯任務(wù)調(diào)度表,打開(kāi)后的調(diào)度表如圖所示。表中每一行代表一個(gè)要執(zhí)行的任務(wù),每一行又分為六個(gè)字段,從左到右依次為:分鐘、小時(shí)、日期、月份、星期、所要執(zhí)行的命令或腳本。
調(diào)度表字段取值范圍
各字段的取值既可以為特定數(shù)字,也可以為指定的特殊字符。各字段的取值范圍如下:
- 分鐘:0-59
- 小時(shí):0-23
- 日期:1-31
- 月份:1-12
- 星期:0-7,0和7都代表星期天
特殊字符代表的意義為:
- *(星號(hào)):代表任意時(shí)刻。例如 `8 0 * * * cmd` 表示每天8點(diǎn)整執(zhí)行cmd命令。
- ,(逗號(hào)):代表并列的時(shí)段。例如 `0 3,6,9 * * * cmd` 表示每天3點(diǎn)整、6點(diǎn)整和9點(diǎn)整執(zhí)行cmd命令。
- -(減號(hào)):代表時(shí)段范圍。例如 `30 20-23 * * * cmd` 表示每天20點(diǎn)到23點(diǎn)之間的每個(gè)小時(shí)的第30分鐘執(zhí)行cmd命令。
- /(斜線(xiàn)):代表每n個(gè)時(shí)間間隔執(zhí)行一次。例如 `*/10 * * * * cmd` 表示每十分鐘執(zhí)行一次cmd命令。
查詢(xún)和刪除任務(wù)
確定任務(wù)是否已經(jīng)加入調(diào)度隊(duì)列,可以使用`crontab -l`來(lái)進(jìn)行查詢(xún)。若要?jiǎng)h除某一項(xiàng)任務(wù),可以使用`crontab -e`編輯刪去任務(wù)所在行;若要?jiǎng)h除全部任務(wù),可以使用`crontab -r`命令。