Linux crontab是用來定期執(zhí)行程序的命令。當(dāng)安裝完成操作系統(tǒng)之后,默認(rèn)便會(huì)啟動(dòng)此任務(wù)調(diào)度命令。
crond 命令每分鐘會(huì)定期檢查是否有要執(zhí)行的工作,如果有要執(zhí)行的工作便會(huì)自動(dòng)執(zhí)行該工作。
注意:新創(chuàng)建的 cron 任務(wù),不會(huì)馬上執(zhí)行,至少要過 2 分鐘后才可以,當(dāng)然你可以重啟 cron 來馬上執(zhí)行。
而 linux 任務(wù)調(diào)度的工作主要分為以下兩類:
1、系統(tǒng)執(zhí)行的工作:系統(tǒng)周期性所要執(zhí)行的工作,如備份系統(tǒng)數(shù)據(jù)、清理緩存
2、個(gè)人執(zhí)行的工作:某個(gè)用戶定期要做的工作,例如每隔10分鐘檢查郵件服務(wù)器是否有新信,這些工作可由每個(gè)用戶自行設(shè)置
一、crontab的基本用法
分鐘(0-59) 小時(shí)(0-24) 日(1-31) 月(1-12)星期(0-7) <要執(zhí)行的命令>
其中星期從0到6,0表示周日,1~7對(duì)應(yīng)星期一到星期日,也可以用0來表示星期日。
上圖每個(gè)星號(hào)*分別對(duì)應(yīng)具體的時(shí)間塊(分鐘、小時(shí)、日等)。
執(zhí)行crontab -l可以列出當(dāng)前用戶的所有定時(shí)任務(wù)。
如果想要編輯當(dāng)前用戶的定時(shí)任務(wù),執(zhí)行crontab -e,如果是第一次編輯crontab定時(shí)任務(wù),需要先選擇想要使用的編輯器,如下所示,輸入對(duì)應(yīng)的編號(hào),如輸入3,選擇vim編輯器。
[root@centos-160 ~]# crontab -lno crontab for root[root@centos-160 ~]# crontab -eno crontab for root - using an empty onecrontab: no changes made to crontab
crontab常見命令參數(shù):
usage: crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
(default operation is replace, per 1003.2)
-e (edit user's crontab)
-l (list user's crontab)
-r (delete user's crontab)
-i (prompt before deleting user's crontab)
-s (selinux context)
crontab -e – 編輯該用戶的 crontab,當(dāng)指定 crontab 不存在時(shí)新建。
crontab -l – 列出該用戶的 crontab。
crontab -r – 刪除該用戶的 crontab。
crontab -u<用戶名稱> – 指定要設(shè)定 crontab 的用戶名稱。
二、crontab使用入門
1. 每分鐘執(zhí)行一次命令
* * * * * <要執(zhí)行的命令>
簡(jiǎn)要說明:
- * 代表著所有可能取到的值,除了直接用 * 外,下面的幾個(gè)例子也較為常用
- 當(dāng)指定 */5 在分鐘字段,代表每五分鐘。
- 當(dāng)指定 0-10/2 在分鐘字段,代表在前十分鐘的每?jī)煞昼?/li>
比如,每分鐘進(jìn)行一次手工同步時(shí)間,就可以在crontab文件中寫入下面的crontab 語句:
* * * * * chronyc -a makestep
保存、退出編輯器。然后可以通過crontab -l看到我們剛剛添加的任務(wù),等待幾分鐘就可以看到時(shí)間同步了。
2. 每5分鐘執(zhí)行一次命令
*/5 * * * * <要執(zhí)行的命令>
比如每5分鐘往文件~/hello.txt中寫入一個(gè)“hello world”,就可以在crontab文件中寫入下面的crontab語句:
*/5 * * * * echo "hello world" >> ~/hello.txt
等待一些時(shí)間就可以看到~/hello.txt文件里面多了幾個(gè)”hello world”。
3. 每15分鐘執(zhí)行一次命令
*/15 * * * * <要執(zhí)行的命令>
4. 每個(gè)小時(shí)的27分執(zhí)行一次命令
27 * * * * <要執(zhí)行的命令>
該定時(shí)任務(wù)每小時(shí)執(zhí)行一次,每次在27分執(zhí)行。
5. 也可以指定多個(gè)具體的執(zhí)行時(shí)間點(diǎn),使用逗號(hào)分隔
0,5,10 * * * * <要執(zhí)行的命令>
將在每個(gè)小時(shí)的0分、5分、10分分別執(zhí)行一次。
6. 每半小時(shí),即每30分鐘執(zhí)行一次命令
*/30 * * * * <要執(zhí)行的命令>
如果現(xiàn)在是10點(diǎn)整,那么該任務(wù)將分別在10:30 11:00 11:30 … 執(zhí)行。
需要注意的是具體的時(shí)間和設(shè)置定時(shí)任務(wù)的時(shí)間是無關(guān)的,比如我們?cè)?0:17設(shè)置了定時(shí)任務(wù),那么這個(gè)定時(shí)任務(wù)執(zhí)行的時(shí)間不是10:47、11:17、11:47等,而是10:30、11:00、11:30等。
7. 每小時(shí)的整點(diǎn)即0分時(shí)執(zhí)行一次命令
0 * * * * <要執(zhí)行的命令>
8. 每1小時(shí)執(zhí)行一次命令
0 */1 * * * <要執(zhí)行的命令>
如果當(dāng)前時(shí)間是10點(diǎn),那么下次執(zhí)行時(shí)間就是11點(diǎn)。
0 */1 * * * rm -f /var/log/clickhouse-server/*.log
三、如何查看crontab的日志記錄
看 /var/log/cron這個(gè)文件就可以,可以用tail -f /var/log/cron觀察。
四、CronTab語法自動(dòng)生成器
通過基于網(wǎng)頁的crontab語法生成器可以快速地檢查crontab語句是否符合預(yù)期或者根據(jù)我們期望的間隔時(shí)間快速生成想要的crontab語句,下面兩個(gè)網(wǎng)站都是英文的,但是都是很簡(jiǎn)單的英文,很容易上手。
在crontab.guru 中輸入crontab語句,網(wǎng)站將會(huì)告訴我們這段語句的含義,以及執(zhí)行的具體時(shí)間,可以用來檢驗(yàn)編寫的crontab語句是否正確。
還可以在下面的網(wǎng)站中可以設(shè)定我們想要的運(yùn)行間隔,然后網(wǎng)頁會(huì)自動(dòng)生成對(duì)應(yīng)的crontab語句。
http://cron.ciding.cc/
也可以反解析Cron 表達(dá)式:0 */5 * * *
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。