Linux下crontab定時任務詳解
crontab命令是被用來提交和管理用戶的需要周期性執行的任務,與Windows下的計划任務類似,系統安裝完成后,默認安裝此服務,並且會自啟動crond進程,每分鍾定期檢查要執行的任務。
一、語法
crontab 選項 參數(指要執行任務的crontab文件)
-e 編輯該用戶的計時器設置
-l 列出該用戶的計時器設置
-r 刪除該用戶的計時器設置
-u 用戶名稱 指定要設定計時器的用戶名稱
crontab文件含義(六段):分 時 日 月 周 [要執行的命令]
星號* 代表所有可能的值
逗號, 指定一個列表范圍
中杠- 指定一個整數范圍
正斜線/ 指定時間的間隔頻率
crontab -e 編輯該用戶的定時任務或者使用vim /var/spool/cron/root編輯該用戶的定時任務
crontab -l 查看定時任務
crontab -r 刪除所有定時任務
二、crond服務
crond是一個linux下 的定時執行工具,可以在無需人工干預的情況下運行 作業。
service crond start //啟動服務
service crond stop //關閉服務
service crond restart //重啟服務
service crond reload //重新載入配置
service crond status //查看服務狀態
ntsysv //查看是否設置為開機自啟動
chkconfig -level 35 crond on //加入開機自啟動
三、任務調度
Linux下的任務調度分為兩類:系統任務調度和用戶任務調度。
系統任務調度:系統周期性所要執行的工作,比如寫緩存數據到硬盤,存放在/etc目錄下的crontab文件中。
用戶任務調度:用戶定期要執行的工作,比如用戶數據備份、定時郵件提醒,存放在/var/spool/cron目錄中,其文件名與用戶名一致。
使用者權限文件如下:
/etc/cron.deny 該文件中所列用戶不允許使用
/etc/cron.allow 該文件中所列用戶允許使用crontab命令
/var/spool/cron/ 所有用戶crontab文件存放的目錄,以用戶名命名
四、案例解析
1、每分鍾向/root/test/test.log文件打印輸出日期
*/1 * * * * echo `date` >>/root/test/test.log
2、每分鍾執行一個shell腳本(規范寫法:先在shell文件里編寫需要執行的命令)
*/1 * * * * /bin/sh /root/server/scripts/tar.sh >/dev/null 2>&1
3、每條任務調度執行完畢,系統都會將任務輸出信息通過電子郵件的形式發送給當前系統用戶,久而久之文件會變得很大,可能會影響系統的正常運行。
/dev/null 2>&1”表示先將標准輸出重定向到/dev/null,然后將標准錯誤重定向到標准輸出,由於標准輸出已經重定向到了/dev/null,
因此標准錯誤也會重定向到/dev/null,這樣日志輸出問題就解決了。
四:企業生產場景如何調試crontab定時任務
(1)增加執行任務頻率調試任務(某些任務不能用於生產環境,沒有測試機會)
代碼發布:個人開發環境 -- 辦公測試環境 -- IDC機房測試環境 -- IDC正式環境(分組,灰度發布)
(2)調整系統時間調試任務(不能直接用於生產環境),保持五分鍾
(3)通過腳本日志輸出調試定時任務
(4)注意一些任務命令帶來的問題
(5)注意環境變量導致的定時任務故障(java環境變量問題: http://oldboy.blog.51cto.com/2561410/1541515)
(6)通過crond定時任務服務日志調試定時任務(/var/log/cron)
詳情請閱覽此條博文:https://www.cnblogs.com/ginvip/p/6358071.html?utm_source=itdadao&utm_medium=referral#undefined