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