1、簡介 crontab用於設置周期性被執行的命令 Linux系統中Linux調動工作分為兩大類: 1、系統執行的工作:系統周期性所要執行的工作,如備份系統數據、清理緩存 2、個人執行的工作:某個用戶定期要做的工作,例如每隔10分鐘檢查郵件伺服器是否有新信,這些工作可由每個用戶自行設置 /etc/c ...
1、簡介
crontab用於設置周期性被執行的命令 Linux系統中Linux調動工作分為兩大類: 1、系統執行的工作:系統周期性所要執行的工作,如備份系統數據、清理緩存 2、個人執行的工作:某個用戶定期要做的工作,例如每隔10分鐘檢查郵件伺服器是否有新信,這些工作可由每個用戶自行設置 /etc/crtontab 系統調度的任務一般存放在/etc/crontab這個文件下,裡面存放了一些系統運行的調度程式,通過命令cat crontab查看 這些任務會在系統運行起來自動調用 /var/spool/cron 每個用戶都會生成自動生成一個自己的crontab文件,一般位於/var/spool/cron目錄下 執行命令crontab -r 就會刪除當前用戶的crontab文件。例如你切換到suifeng賬號下,執行了該命令,那麼/var/spool/cron/suifeng文件就會刪除,如果要創建該文件只需要用crontab -e命令即可。 註意,普通用戶一般沒有許可權訪問/var/spool/cron /etc/crontab.deny文件與/etc/crontab.allow文件 1、分別表示不能使用crontab命令的用戶、以及能夠使用crontab命令的用戶 2、兩個文件同時存在crontab.allow文件優先 3、兩個文件都不存在則只有root用戶才擁有調用該命令2、語法
crontab [-e [UserName]|-l [UserName]|-r [UserName]|-v [UserName]|File ] 各個參數說明:- -e [UserName]: 執行文字編輯器來設定時程表,內定的文字編輯器是 vi(可以指定別的用戶,但是必須擁有許可權)
- -r [UserName]: 刪除目前的時程表
- -l [UserName]: 列出目前的時程表
- -v [UserName]:列出用戶cron作業的狀態
欄位名稱 | 說明 | 取值範圍 |
分鐘 | 每小時的第幾分鐘執行 | 0-59 |
小時 | 每日的第幾個小時執行 | 0-23 |
日期 | 每月的第幾天執行 | 1-31 |
月曆 | 每年的第幾月執行 | 1-12 |
星期 | 每周的第幾天執行 | 0-6 |
命令名稱 | 欲執行的命令及參數 |
符號 | 說明 |
* | 表示任何時刻 |
, | 表示分割 |
- | 表示一個段,如第二段里: 1-5,就表示1到5點 |
/n | 表示每個n的單位執行一次,如第二段里,*/1, 就表示每隔1個小時執行一次命令。也可以寫成1-23/1. |
3、使用示例
實例1: 每1分鐘執行一次command 命令:* * * * * command 實例2: 每小時的第3和第15分鐘執行 命令:3,15 * * * * command 實例3: 在上午8點到11點的第3和第15分鐘執行 命令:3,15 8-11 * * * command 實例4: 每隔兩天的上午8點到11點的第3和第15分鐘執行 命令:3,15 8-11 */2 * * command 實例5: 每個星期一的上午8點到11點的第3和第15分鐘執行 命令:3,15 8-11 * * 1 command 實例6: 每晚的21:30重啟smb 命令:30 21 * * * /etc/init.d/smb restart 實例7: 每月1、10、22日的4 : 45重啟smb 命令:45 4 1,10,22 * * /etc/init.d/smb restart 實例8: 每周六、周日的1 : 10重啟smb 命令:10 1 * * 6,0 /etc/init.d/smb restart 實例9: 每天18 : 00至23 : 00之間每隔30分鐘重啟smb 命令:0,30 18-23 * * * /etc/init.d/smb restart 實例10: 每星期六的晚上11 : 00 pm重啟smb 命令:0 23 * * 6 /etc/init.d/smb restart 實例11: 每一小時重啟smb 命令:* */1 * * * /etc/init.d/smb restart 實例12: 晚上11點到早上7點之間,每隔一小時重啟smb 命令:* 23-7/1 * * * /etc/init.d/smb restart 實例13: 每月的4號與每周一到周三的11點重啟smb 命令:0 11 4 * mon-wed /etc/init.d/smb restart 實例14: 一月一號的4點重啟smb 命令:0 4 1 jan * /etc/init.d/smb restart 實例15: 每小時執行/etc/cron.hourly目錄內的腳本 命令:01 * * * * root run-parts /etc/cron.hourly 說明:run-parts這個參數了,如果去掉這個參數的話,後面就可以寫要運行的某個腳本名,而不是目錄名 實例16: 1、每天23點59分後臺執行test.sh腳本;並將標準輸出寫入log.txt中 命令:59 23 * * * /home/suifeng/scripts/test.sh >/home/suifeng/log.txt & 2、同上 命令:59 23 * * * /home/suifeng/scripts/test.sh 1>/home/suifeng/log.txt & 3、每天23點59分後臺執行test.sh腳本;並將錯誤輸出寫書log.txt中 命令:59 23 * * * /home/suifeng/scripts/test.sh 1>/home/suifeng/log.txt & 4、每天23點59分後臺執行test.sh腳本;並將錯誤輸錯當做標準輸出(即將錯誤輸出和標準輸出全部寫入log.txt中) 命令:59 23 * * * /home/suifeng/scripts/test.sh 1>/home/suifeng/log.txt 2>&1 & 相關說明: 0表示鍵盤輸入 1表示標準輸出 2表示錯誤輸出 &表示後臺執行 >>表示追加 >表示覆蓋寫 註意: 1、當在前臺運行某個作業時,終端被該作業占據;而在後臺運行作業時,它不會占據終端。可以使用&命令把作業放到後臺執行。 2、需要用戶交互的命令不要放在後臺執行,因為那樣子機器將會在那一直等待 3、作業在後臺運行時,一樣會將結果輸出在屏幕上,干擾你的正常工作。因此我們最好將輸出重定向到某個文件中4、crond服務
通過 chkconfig --list | grep cron 命令來查看cron服務的啟動情況: [root@***** home]# chkconfig --list | grep cron crond 0:關閉 1:關閉 2:啟用 3:啟用 4:啟用 5:啟用 6:關閉 我們可以看到,系統啟動級別如果是1-4,cron服務都會開機自動啟動的,我們可以通過如下命令來設置該服務的啟動項: /sbin/service crond start /sbin/service crond stop /sbin/service crond restart /sbin/service crond reload 以上1-4行分別為啟動、停止、重啟服務和重新載入配置。 要把cron設為在開機的時候自動啟動,在 /etc/rc.d/rc.local 腳本中加入 /sbin/service crond start 即可。 查看crontab服務狀態: service crond status5、個人經驗總結
我們使用這個命令大多都是運行相關的腳本文件,最常見的就是定時調用http請求進行數據採集或者資料庫的備份等等。因此當我們自己所寫的腳本文件中含有文件引入時,最好採用絕對路徑,否則將會引入失敗從而導致定時任務失敗。(以上是自己的一些見解,若有不足或者錯誤的地方請各位指出)
作者:那一葉隨風 http://www.cnblogs.com/phpstudy2015-6/
原文地址:http://www.cnblogs.com/phpstudy2015-6/p/7534968.html
聲明:本博客文章為原創,只代表本人在工作學習中某一時間內總結的觀點或結論。轉載時請在文章頁面明顯位置給出原文鏈接