定時任務操作

Dusk_Yun發表於2024-08-17

一、定時任務的作用

  1. 時間同步,每隔5min自動同步一次
  2. 資料備份,服務配置檔案,系統配置檔案,資料檔案,日誌檔案
  3. 輔助軟體正常執行+指令碼

二、定時任務的分類

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

執行定時任務的流程

  1. 執行命令
  2. 執行完成後會傳送一條結果到郵箱的檔案中/var/spool/mail/root
  3. 對使用者提供訪問到伺服器,會將郵件服務關閉,關閉後/var/spoolmail/root就不會再接收任何資訊
  4. 因為郵件服務佔用系統資源,降低影響伺服器的效能
  5. 如果郵件關閉後,效能提升,但是命令執行的結果郵件不再接收,會生成臨時小檔案,大量的小檔案會佔用inode號
  6. inode號耗盡磁碟無法寫入內容
  7. 產生臨時小檔案的位置:ll /var/spool/postfix/maildrop/

停止郵件服務:
[root@web01 ~]# systemctl stop postfix
[root@web01 ~]# systemctl disable postfix

解決方案:

  1. 開啟郵件不會產生臨時小檔案
  2. 將定時任務結果定向到空 不會產生臨時小檔案
  3. 使用定時任務刪除小檔案
  4. 使用者的定時任務只識別的命令路徑/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