要執(zhí)行周期性任務(wù),要保證服務(wù)運(yùn)行栋齿。服務(wù)名為crond;service crond start ; systemctl start crond;
配置文件
/etc/crontab
cron的日志文件
cat /var/log/cron
一、簡(jiǎn)介
crond是linux下用來周期性的執(zhí)行某種任務(wù)或等待處理某些事件的一個(gè)守護(hù)進(jìn)程瓦堵,與windows下的計(jì)劃任務(wù)類似基协,當(dāng)安裝完成操作系統(tǒng)后,默認(rèn)會(huì)安裝此服務(wù)工具菇用,并且會(huì)自動(dòng)啟動(dòng)crond進(jìn)程澜驮,crond進(jìn)程每分鐘會(huì)定期檢查是否有要執(zhí)行的任務(wù),如果有要執(zhí)行的任務(wù)惋鸥,則自動(dòng)執(zhí)行該任務(wù)杂穷。
二、任務(wù)調(diào)度的分類
Linux下的任務(wù)調(diào)度分為兩類卦绣,系統(tǒng)任務(wù)調(diào)度和用戶任務(wù)調(diào)度耐量。
系統(tǒng)任務(wù)調(diào)度:系統(tǒng)周期性所要執(zhí)行的工作,比如寫緩存數(shù)據(jù)到硬盤滤港、日志清理等廊蜒。在/etc目錄下有一個(gè)crontab文件,這個(gè)就是系統(tǒng)任務(wù)調(diào)度的配置文件溅漾。
1.系統(tǒng)任務(wù)調(diào)度
通過編輯配置文件/etc/crontab山叮,以下圖的格式標(biāo)明需要運(yùn)行的時(shí)間即可。一行對(duì)應(yīng)一個(gè)任務(wù)添履,格式如下圖屁倔。
2.用戶任務(wù)調(diào)度
在當(dāng)前用戶下使用命令crontab -e
,會(huì)以當(dāng)前用戶的身份建立任務(wù)調(diào)度暮胧。與系統(tǒng)任務(wù)調(diào)度文件格式不同的是不需要指名以哪個(gè)用戶的身份運(yùn)行汰现。
3.時(shí)間表示
- 指定值:指定具體的數(shù)字
- 范圍值:* 表示每,每到這這個(gè)時(shí)間段執(zhí)行一次任務(wù)叔壤。
- 離散取值:10 2,3,4 * * *;每天的2,3,4點(diǎn)的10分執(zhí)行一次口叙。(總共執(zhí)行了3次)
- 連續(xù)范圍: 10 2-10 * * *炼绘;每天的2點(diǎn)10分到10點(diǎn)10分分別執(zhí)行(總共執(zhí)行了8次)
- 步長(zhǎng)范圍:*/3 * * * *;每分鐘內(nèi)執(zhí)行3次(即每20秒執(zhí)行一次)
舉例:
10 10 */6 * *妄田;每6天的10點(diǎn)10分執(zhí)行一次任務(wù) - 日期與星期
10 10 1-10 * 0,6 #每個(gè)月的1-10號(hào)的10點(diǎn)10分俺亮,或者周六日的10點(diǎn)10分都執(zhí)行
舉例:
1 1 */6 * * root echo "hello word " ;每隔6天的1點(diǎn)1分執(zhí)行一次任務(wù)疟呐。
1 1-10/3 * * * root echo “hello word”脚曾;在每天1-10點(diǎn)范圍內(nèi)每3小時(shí)內(nèi)的第一分鐘執(zhí)行一次
4.創(chuàng)建周期性任務(wù)
crontab -e
* * * * * /bin/echo "`date +\%F \%H:\%M:\%S`"
#命令要寫絕對(duì)路徑。除非標(biāo)明變量
#如果在用戶下新建crontab的話%需要轉(zhuǎn)義
5.創(chuàng)建時(shí)的其他設(shè)置
創(chuàng)建周期性任務(wù)時(shí)启具,默認(rèn)的編輯器為vi所以沒有語法高亮本讥。可以通過以下辦法將默認(rèn)編輯器修改為vim
#寫入/etc/porfile.d 對(duì)所有用戶生效
#寫入~/bash_profile 對(duì)當(dāng)前用戶
export EDITOP=vim
6.創(chuàng)建任務(wù)的權(quán)限
- 允許指定用戶創(chuàng)建任務(wù)
cat /etc/cron.deny #在文件內(nèi)寫入用戶名,使其不能創(chuàng)建新任務(wù)拷沸,但已創(chuàng)建的依然會(huì)執(zhí)行 - 拒絕指定用戶創(chuàng)建任務(wù)
cat /etc/cron.allow #默認(rèn)文件不存在 - 允許與拒絕優(yōu)先級(jí)
如果allow文件存在色查,那么deny文件不生效。
如果allow為空撞芍,拒絕所有用戶
如果allow秧了、deny都不存在,任何用戶不能創(chuàng)建計(jì)劃任務(wù)
7.實(shí)現(xiàn)毫秒序无、秒級(jí)別的周期性任務(wù)
- 利用usleep實(shí)現(xiàn)微妙級(jí)別的運(yùn)行
usleep 1000000验毡;1秒
usleep 1000;1毫秒
usleep 1帝嗡;1微秒 - 利用循環(huán)體加sleep實(shí)現(xiàn)秒級(jí)別的晶通。在每分鐘要執(zhí)行的任務(wù)中sleep20秒。