最近工作需要在指定時間執行程式碼,多次用到Linux的crontab定時任務機制,趁著春節假期做一個梳理總結。
1 crontab管理¶
(1)安裝
yum install crontabs
(2)設定開機啟動
systemctl enable crond
systemctl start crond
(3)檢視狀態
systemctl status crond.service
(4)停止
systemctl stop yum-cron
systemctl stop crond
(5)重新載入
systemctl reload crond.service
(6)crontab任務管理常用命令
crontab -l # 列出當前的所有排程任務
crontab -l -u username # 列出使用者username的所有排程任務
crontab -r # 刪除所有任務排程工作
2 配置定時任務¶
(1)任務配置格式
crontab任務配置基本格式:
* * * * * [username] command
在上行配置格式中,每一列(每一個*)代表一個配置項,具體含義如下所示:
第1列表示分鐘0~59 每分鐘用 或者 /1 表示,*/5表示每5分鐘
第2列表示小時0~23(0表示0點)
第3列表示日期1~31
第4列表示月份1~12
第5列標識號星期0~6(0,7都可表示星期天)
第6列要執行的命令或執行shell指令碼
下面我們通過一些例項來說明:
5 * * * * ls # 指定每小時的第5分鐘執行一次ls命令
30 5 * * * ls # 指定每天的 5:30 執行ls命令
30 7 8 * * ls # 指定每月8號的7:30分執行ls命令
30 5 8 6 * ls # 指定每年的6月8日5:30執行ls命令
30 5 8 6 * ls # 指定每年的6月8日5:30執行ls命令
30 6 * * 0 ls # 指定每星期日的6:30執行ls命令
30 3 10,20 * * ls # 每月10號及20號的3:30執行ls命令
25 8-11 * * * ls # 每天8-11點的第25分鐘執行ls命令
*/15 * * * * ls # 每15分鐘執行一次ls命令
30 6 */10 * * ls # 每個月中,每隔10天6:30執行一次ls命令
(2)/etc/crontab /etc/crontab是系統級別的定時任務,這種方式配置定時任務時,有一個專門的欄位用於指定使用者。使用vim開啟/etc/crontab檔案,可以看到如下內容:
(3)/var/spool/cron/username /var/spool/cron/username是使用者級的定時任務,每個使用者的定時任務後,都配置在/var/spool/cron目錄下,與使用者名稱同名的檔案中。可以直接使用vim命令直接將定時任務寫入/var/spool/cron/username檔案,也可以使用“crontab -e”命令配置,最終結果會自動寫入/var/spool/cron/username檔案。