crontab定時任務

奧辰發表於2021-02-15
 

最近工作需要在指定時間執行程式碼,多次用到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檔案。

相關文章