一、定時任務的作用
- 時間同步,每隔5min自動同步一次
- 資料備份,服務配置檔案,系統配置檔案,資料檔案,日誌檔案
- 輔助軟體正常執行+指令碼
二、定時任務的分類
1、定時任務檔案不同
1.1、系統定時任務
/etc/crontab
1.2、使用者定時任務,root是配置檔案
/var/spool/cron/root
2、配置方式不同
2.1、系統的定時任務配置方式:直接編輯配置檔案
vim /etc/crontab
2.2、使用者的定時任務配置方式:使用命令編輯配置檔案
crontab -e(語法檢測) ----> 實際編輯的 vim /var/spool/cron/root
三、系統定時任務書寫方式
* * * * * root 可執行的命令
分 時 日 月 周
分:0-59
時:0-23
日:1-31
月:1-12
周:0-6 or 1-7
時間符號表示方法:
* 表示每分鐘 每小時
*/5 表示每隔5分鐘執行一次;從整點開始計算,例如8:02定義--->第一次執行的時間8:05
- 表示連續的,7-10表示7點8點9點10點分別執行
, 表示不連續的,7,9,11 表示7點9點11點
四、案例
# 案例1:每天的上午8點30分,執行命令echo test 追加到一個檔案中 >> test.txt
30 8 * * * root echo test >> test.txt # vim/etc/crotab
修改為每分鐘進行測試,沒有問題再改回到原來的時間
* * * * * root echo test >> test.txt # crotab -e
[root@web01 ~]# tailf /var/log/cron # 檢視日誌
# 案例2:每天晚上12點執行一條命令(筆試題)
00 00 * * * root echo test >> test.txt
執行定時任務的流程
- 執行命令
- 執行完成後會傳送一條結果到郵箱的檔案中/var/spool/mail/root
- 對使用者提供訪問到伺服器,會將郵件服務關閉,關閉後/var/spoolmail/root就不會再接收任何資訊
- 因為郵件服務佔用系統資源,降低影響伺服器的效能
- 如果郵件關閉後,效能提升,但是命令執行的結果郵件不再接收,會生成臨時小檔案,大量的小檔案會佔用inode號
- inode號耗盡磁碟無法寫入內容
- 產生臨時小檔案的位置:ll /var/spool/postfix/maildrop/
停止郵件服務:
[root@web01 ~]# systemctl stop postfix
[root@web01 ~]# systemctl disable postfix
解決方案:
- 開啟郵件不會產生臨時小檔案
- 將定時任務結果定向到空 不會產生臨時小檔案
- 使用定時任務刪除小檔案
- 使用者的定時任務只識別的命令路徑/usr/bin和/bin目錄可以在使用者的定時任務中/var/spool/cron/root新增PATH變數或者使用絕對路徑執行命令,但是不推薦這種方式或者在指令碼中定義PATH變數
生產案例
需求:每分鐘建立一個以ip地址命名的目錄,並把/etc/目錄打包壓縮放在裡面,保持每天的壓縮包名字不同
結果:
10.0.0.200/
2023-10-12-13-20.tar.gz
2023-10-12-13-21.tar.gz
#建立目錄
mkdir -p /root/$(ifconfig eth0|awk 'NR==2{print $2}')
#解壓並根據時間定義名稱
tar zcf /root/`ifconfig eth0|awk 'NR==2{print $2}'`/`date +%F:%H:%M:%S`.tar.gz /e
tc
vim /etc/crontab
* * * * * root sh /server/scripts/new.sh