1. 程式人生 > >使用Crontab定時執行任務

使用Crontab定時執行任務

crontab命令用於設定週期性被執行的指令。該命令從標準輸入裝置讀取指令,並將其存放於“crontab”檔案中,以供之後讀取和執行。

cron 系統排程程序。 可以使用它在每天的非高峰負荷時間段執行作業,或在一週或一月中的不同時段執行。cron是系統主要的排程程序,可以在無需人工干預的情況下執行作業。crontab命令允許使用者提交、編輯或刪除相應的作業。每一個使用者都可以有一個crontab檔案來儲存排程資訊。系統管理員可以通過cron.deny 和 cron.allow 這兩個檔案來禁止或允許使用者擁有自己的crontab檔案。

在運維中運用的很多,可以定時執行一些shell,python,perl指令碼來監控系統的變化,我一般是運用於執行一些python指令碼,檢查伺服器上的檔案、使用者等變化情況,然後把執行結果通過郵箱傳送到自己的郵箱上,可省去很大一部分的工作量。

1、crontab檔案一般位於/etc/下,這裡面存放系統執行的的排程程式。

2、每個使用者都會生成一個自動生成一個自己的crontab檔案,一般位於/var/spool/cron目錄下,每個使用者都可以執行自己的定時任務,相互之間不衝突。

命令:
-crontab -r 刪除當前使用者的crontab檔案 ,如果切換到test使用者下,會把test使用者的定時任務全刪除了

-crontab -e 建立定時任務,操作和一樣,每一行是一條指令
這裡寫圖片描述

-crontab -l 檢視當期使用者的定時任務
一般的格式為:

0 9 * * * python /var/log/watch.py

a b c d e python /var/log/watch.py
前面一部分指明執行的時間,後面一部分指明定時執行的命令

第一列a 分鐘: 1——59

第二列b 小時: 1——23(0表示子夜)

第三列c 日 : 1——31

第四列d 月 : 1——12

第五列 星期: 星期0——6(0表示星期天,1表示星期一、以此類推)

如果沒有指明,就用*代替,那麼這就會表示,每分/時/日/月/周。。都要執行

如果a沒有指明,是用*表示,那麼表示每分鐘都要執行
如果b沒有指明,是用*表示,那麼表示每個小時都要執行
如果c沒有指明,是用*表示,那麼表示每天都要執行
如果d沒有指明,是用*表示,那麼表示每月都要執行
如果e沒有指明,是用*表示,那麼表示每週都要執行

具體例子:

15,30,45,59 * * * * 每個小時的15分,30分,45分,59分各執行一次
0 */2 * * * date 每兩個小時一次
0 11 4 * mon-wed date 每個月的4號和每個禮拜的禮拜一到禮拜三的早上11點
/5 * * * 每5分鐘執行一次

注:
儘量所有的檔案都採用完全路徑方式,避免使用相對路徑。