Linux Crontab 介紹
crontab命令常見于Unix和類Unix的操作系統(tǒng)之中,用于設(shè)置周期性被執(zhí)行的指令。該命令從標(biāo)準(zhǔn)輸入設(shè)備讀取指令,并將其存放于“crontab”文件中,以供之后讀取和執(zhí)行。該詞來源于希臘語 chronos(χρνο),原意是時(shí)間。常,crontab儲(chǔ)存的指令被守護(hù)進(jìn)程激活, crond常常在后臺(tái)運(yùn)行,每一分鐘檢查是否有預(yù)定的作業(yè)需要執(zhí)行。這類作業(yè)一般稱為cron jobs。
Crontab是什么
我總是喜歡將一些特別專業(yè)的詞匯翻譯成比較淺顯易懂的詞語,可能并不是很準(zhǔn)確,但是我覺得更便于理解。
按照前人的解釋,cron是系統(tǒng)主要的調(diào)度進(jìn)程,可以在非人工干預(yù)的情況下運(yùn)行作業(yè)。crontab命令允許用戶提交、編輯或刪除相應(yīng)的作業(yè)。簡單來說,當(dāng)我們需要讓系統(tǒng)執(zhí)行一個(gè)定時(shí)任務(wù)時(shí),我們就會(huì)用到它,比如定時(shí)重啟tomcat,或者定時(shí)調(diào)用一個(gè)jar包來執(zhí)行某項(xiàng)功能等。
1.Cron的啟動(dòng)與關(guān)閉
由于Cron是Linux的內(nèi)置服務(wù),可以用以下的方法啟動(dòng).關(guān)閉這個(gè)服務(wù):
/sbin/service crond start //啟動(dòng)服務(wù) /sbin/service crond stop //關(guān)閉服務(wù) /sbin/service crond restart //重啟服務(wù) /sbin/service crond reload //重新載入配置
2.Cron配置文件
2.1全局配置文件
crontab在/etc目錄下面存在cron.hourly,cron.daily,cron.weekly,cron.monthly,cron.d五個(gè)目錄和crontab,cron.deny二個(gè)文件.
cron.daily是每天執(zhí)行一次的job,cron.weekly是每個(gè)星期執(zhí)行一次的job.cron.monthly是每月執(zhí)行一次的job,cron.hourly是每個(gè)小時(shí)執(zhí)行一次的job.cron.d是系統(tǒng)自動(dòng)定期需要做的任務(wù),但是又不是按小時(shí),按天,按星期,按月來執(zhí)行的,那么就放在這個(gè)目錄下面.
/etc/crontab文件一般如下:
01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly
我們可在此文件中添加自己需要的cron job.
/etc/cron.deny
文件就是用于控制不讓哪些用戶使用Crontab的功能.
2.2用戶配置文件
每個(gè)用戶都有自己的cron配置文件,通過crontab -e 就可以編輯,一般情況下我們編輯好用戶的cron配置文件保存退出后,系統(tǒng)會(huì)自動(dòng)就存放于/var/spool/cron/
目錄中,文件以用戶名命名.
linux的cron服務(wù)是每隔一分鐘去讀取一次/var/spool/cron,/etc/crontab,/etc/cron.d下面所有的內(nèi)容.
3.Cron命令格式
crontab [ -u user ] 文件 crontab [ -u user ] { -l | -r | -e } -u:指定某一用戶 -e:執(zhí)行文字編輯器來設(shè)定用戶(當(dāng)前用戶或指定用戶)時(shí)程表,內(nèi)定的文字編輯器是vi. -r:刪除用戶時(shí)程表. -l:列出用戶時(shí)程表.
4.Cron文件格式
* * * * * command
分 時(shí) 日 月 周 命令
第1列表示分鐘1~59, 每分鐘用*或者 */1表示
第2列表示小時(shí)1~23(0表示0點(diǎn))
第3列表示日期1~31
第4列表示月份1~12
第5列標(biāo)識(shí)號(hào)星期0~6(0表示星期天)
第6列要運(yùn)行的命令
5.Cron文件使用說明
5.1 一般情況
當(dāng)f1 為 * 時(shí)表示每分鐘都要執(zhí)行 program,f2 為 * 時(shí)表示每小時(shí)都要執(zhí)行程序,其余類推.
* * * * * /bin/usershell 每天每分鐘執(zhí)行一次/bin/usershell
當(dāng)f1 為 a-b 時(shí)表示從第 a 分鐘到第 b 分鐘這段時(shí)間內(nèi)要執(zhí)行,f2 為 a-b 時(shí)表示從第 a 到第 b 小時(shí)都要執(zhí)行,其余類推.
0-12 * * * * /bin/usershell 每天每小時(shí)從0到12分鐘每分鐘執(zhí)行一次/bin/usershell
當(dāng)f1 為 */n 時(shí)表示每 n 分鐘個(gè)時(shí)間間隔執(zhí)行一次,f2 為 */n 表示每 n 小時(shí)個(gè)時(shí)間間隔執(zhí)行一次,其余類推.
* */2 * * * /bin/usershell 每天每2小時(shí)執(zhí)行一次/bin/usershell
當(dāng)f1 為 a, b, c,... 時(shí)表示第 a, b, c,... 分鐘要執(zhí)行,f2 為 a, b, c,... 時(shí)表示第 a, b, c...個(gè)小時(shí)要執(zhí)行,其余類推.
* 1,3,5,7 * * * /bin/usershell 每天每逢1,3,4,7點(diǎn)執(zhí)行一次/bin/usershell
5.2. 沖突邏輯
日期可以用月限定,也可以用“星期”指定,如果兩個(gè)段有沖突,那么,第六段的命令將在匹配任何一個(gè)的情況下都運(yùn)行,比如
"30 4 1,15 * 5",將在每月的1號(hào)和15號(hào)加每個(gè)周五,上午4:30運(yùn)行.
5.3. 符號(hào)"%"
"%"在Cron文件中,有"結(jié)束命令行","換行","重定向"的作用,假如不需要"%"的特殊作用,需要使用轉(zhuǎn)義符轉(zhuǎn)義.
5.4. @reboot
這個(gè)不需要理解,為了達(dá)到在開機(jī)后運(yùn)行,且只運(yùn)行一次的目的.除了這個(gè),也無法通過前五段的設(shè)置來實(shí)現(xiàn).
@annually也是這個(gè)功能.
至于@yearly,@monthly等等其實(shí)都可以用上面的五段來設(shè)置.
以上所述是小編給大家介紹的Crontab 知識(shí),希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- linux使用find和crontab命令定期清理過期文件
- 詳解使用python crontab設(shè)置linux定時(shí)任務(wù)
- Linux crontab定時(shí)任務(wù)配置方法(詳解)
- 淺談Linux配置定時(shí),使用crontab -e與直接編輯/etc/crontab的區(qū)別
- linux下使用crontab實(shí)現(xiàn)定時(shí)PHP計(jì)劃任務(wù)失敗的原因分析
- linux使用crontab實(shí)現(xiàn)PHP執(zhí)行計(jì)劃定時(shí)任務(wù)
- MySQL定時(shí)備份之使用Linux下的crontab定時(shí)備份實(shí)例
- 如何使用Linux的Crontab定時(shí)執(zhí)行PHP腳本的方法
相關(guān)文章
Linux系統(tǒng)MBR和GPT分區(qū)的區(qū)別介紹
這篇文章主要介紹了Linux系統(tǒng)MBR和GPT分區(qū)的區(qū)別介紹,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-04-04win7下安裝Ubuntu后進(jìn)不去win7的完美解決方法
剛剛給同學(xué)在win7下安裝了Ubuntu16.04,結(jié)果在安裝完后竟然無法在電腦重啟后,找到win7的進(jìn)入選項(xiàng)。搗騰了半天才找到解決方法,下面小編把解決方案分享到腳本之家平臺(tái)供大家參考2017-04-04