更新時間:2020-12-24 17:33:14 來源:動力節(jié)點(diǎn) 瀏覽1184次
計(jì)劃任務(wù)是系統(tǒng)的常見功能,利用任務(wù)計(jì)劃功能,可以將任何腳本、程序或文檔安排在某個最方便的時間運(yùn)行。任務(wù)計(jì)劃在每次系統(tǒng)啟動的時候啟動并在后臺運(yùn)行。在Linux系統(tǒng)中,當(dāng)我們需要在服務(wù)器上定時執(zhí)行一些重復(fù)性的事件時使用的,可以通過Linux計(jì)劃任務(wù)程序來運(yùn)行準(zhǔn)備好的腳本、批處理文件夾、程序或命令,在某個特定的時間運(yùn)行。
計(jì)劃任務(wù)在Linux 中一般使用 Crontab,通過 crontab 命令,我們可以在固定的間隔時間執(zhí)行指定的系統(tǒng)指令或 Shell 腳本。Linux 系統(tǒng)上面原本就有非常多的計(jì)劃性工作,因此這個系統(tǒng)服務(wù)是默認(rèn)啟動的。另外, 由于使用者自己也可以設(shè)置計(jì)劃任務(wù),所以, Linux 系統(tǒng)也提供了使用者控制計(jì)劃任務(wù)的命令:crontab命令。因此,Linux計(jì)劃任務(wù)整體還是圍繞Crontab展開的。
1、crontab命令選項(xiàng)
<code># crontab -u <-l, -r, -e></code>
-u指定一個用戶
-l列出某個用戶的任務(wù)計(jì)劃
-r刪除某個用戶的任務(wù)
-e編輯某個用戶的任務(wù)
2、cron文件寫法
可用crontab -e命令來編輯,編輯的是/var/spool/cron下對應(yīng)用戶的cron文件,也可以直接修改/etc/crontab文件。Minute Hour Day Month Week command
分鐘 小時 天 月 星期 命令
0-59 0-23 1-31 1-12 0-6 command
Minute 每個小時的第幾分鐘執(zhí)行該任務(wù)
Hour 每天的第幾個小時執(zhí)行該任務(wù)
Day 每月的第幾天執(zhí)行該任務(wù)
Month 每年的第幾個月執(zhí)行該任務(wù)
DayOfWeek 每周的第幾天執(zhí)行該任務(wù),0表示周日
Command 指定要執(zhí)行的程序 、腳本或命令
3、特殊符號的含義
星號(*):代表所有可能的值,例如month字段如果是星號,則表示在滿足其它字段的制約條件后每月都執(zhí)行該命令操作。
逗號(,):可以用逗號隔開的值指定一個列表范圍,例如,“1,2,5,7,8,9”
中杠(-):可以用整數(shù)之間的中杠表示一個整數(shù)范圍,例如“2-6”表示“2,3,4,5,6”
正斜線(/):可以用正斜線指定時間的間隔頻率,例如“0-23/2”表示每兩小時執(zhí)行一次。同時正斜線可以和星號一起使用,例如*/10,如果用在minute字段,表示每十分鐘執(zhí)行一次。
4、常用命令
1)cron配置文件路徑
# vi /etc/crontab
2)重啟cron
# /etc/init.d/crond restart
Usage: /etc/rc.d/init.d/crond {start|stop|status|reload|restart|condrestart}
3)查看cron服務(wù)情況
# service crond status //crond服務(wù)狀態(tài)
# service crond stop //crond服務(wù)關(guān)閉
# service crond start //crond服務(wù)打開
4)查看cron日志
# cat /var/log/cron
5)別忘了將腳本改成可執(zhí)行
# chmod +x filename
5、常用示例
5 * * * * ls 指定每小時的第5分鐘執(zhí)行一次ls命令
30 5 * * * ls 指定每天的 5:30 執(zhí)行l(wèi)s命令
30 7 8 * * ls 指定每月8號的7:30分執(zhí)行l(wèi)s命令
30 5 8 6 * ls 指定每年的6月8日5:30執(zhí)行l(wèi)s命令
30 6 * * 0 ls 指定每星期日的6:30執(zhí)行l(wèi)s命令[注:0表示星期天,1表示星期1,以此類推,也可以用英文來表示,sun表示星期天,mon表示星期一等。]
30 3 10,20 * * ls 每月10號及20號的3:30執(zhí)行l(wèi)s命令[注:“,”用來連接多個不連續(xù)的時段]
25 8-11 * * * ls 每天8-11點(diǎn)的第25分鐘執(zhí)行l(wèi)s命令[注:“-”用來連接連續(xù)的時段] */15 * * * * ls 每15分鐘執(zhí)行一次ls命令 [即每個小時的第0 15 30 45 60分鐘執(zhí)行l(wèi)s命令 ]
30 6 */10 * * ls 每個月中,每隔10天6:30執(zhí)行一次ls命令[即每月的1、11、21、31日是的6:30執(zhí)行一次ls命令 ]
每天7:50以root 身份執(zhí)行/etc/cron.daily目錄中的所有可執(zhí)行文件
50 7 * * * root run-parts /etc/cron.daily [ 注:
run-parts參數(shù)表示,執(zhí)行后面目錄中的所有可執(zhí)行文件
第10、20、30分鐘輸出到/tmp/cron1.txt:
10,20,30 * * * * echo "第10、20、30分鐘輸出一次" >> /tmp/cron1.txt
以用戶lzw.me的身份每兩小時就運(yùn)行某個程序:
0 */2 * * * lzw.me /usr/bin/somecommand >> /dev/null 2>&1
我們不難看出Linux計(jì)劃任務(wù)的核心還是Linux crontab 命令,通過Linux crontab 命令來實(shí)現(xiàn)各種Linux計(jì)劃任務(wù)。Linux計(jì)劃任務(wù)和Windows計(jì)劃任務(wù)還是有一定的差異的,Linux系統(tǒng)更加專業(yè)化,對使用者的要求更高。想要徹底掌握Linux系統(tǒng),對于初學(xué)者來說任重而道遠(yuǎn),不過也沒有必要擔(dān)心,本站的Linux教程對Linux進(jìn)行了全方位的知識總結(jié)和講解,能夠幫助我們更快地掌握Linux。
初級 202925
初級 203221
初級 202629
初級 203743