windows伺服器自動刪除日誌檔案
背景:
有一天發現一系統程式突然終止了,發出了系統異常郵件。然後就去伺服器看原因,原因竟然是伺服器硬碟被撐爆。
原因分析:
1、沒有對伺服器硬碟空間做監控;
2、我們的產生的日誌檔案過於龐大,又沒有做及時刪除。
解決方案:
為了一勞永逸的解決硬碟空間問題,我們對伺服器日誌檔案進行定時刪除處理,只保留最近一個月的日誌檔案。
步驟:
1、新建一個bat指令碼。
2、新增到window執行計劃中,進行每日執行。
具體操作
1、新建一個 del_before_30days.bat 檔案。
內容:
forfiles -p "E:\working\logs" -s -m *.log -d -30 -c "cmd /c del @path"
指令碼意思為:
路徑:為E:\working\logs 的下 以匹配 .log 的檔案,刪除30天前的日誌檔案。
forfiles 命令的用法及引數:
forfiles /p <目標目錄名> /d <天數> /c <執行的命令>
/p 指定的路徑
/s 包括子目錄
/m 查詢的檔名掩碼
/d 指定日期,有絕對日期和相對日期, 此處-7指當前日期 的7天前
/c 執行的命令列 表示為每個檔案執行的命令。命令字串應該用雙引號括起來。
預設命令是 "cmd /c echo @file"。下列變數
可以用在命令字串中:
@file - 返回檔名。
@fname - 返回不帶副檔名的檔名。
@ext - 只返回檔案的擴充套件。
@path - 返回檔案的完整路徑。
@relpath - 返回檔案的相對路徑。
@isdir - 如果檔案型別是目錄,返回 "TRUE"; 如果是檔案,返回 "FALSE"。
@fsize - 以位元組為單位返回檔案大小。
@fdate - 返回檔案上一次修改的日期。
@ftime - 返回檔案上一次修改的時間。
2、新增到windows的任務計劃程式。
我的電腦——>右鍵——>管理——>系統工具—>任務計劃程式——>建立基本任務,定義好名字 ,定義每天定時刪除即可。
(win10的是 控制面板-管理工具-任務計劃程式)
修改伺服器密碼會導致任務執行失敗
莫名的日誌一直在堆積,日誌已經大量佔用硬碟,是一個隱患 ,懷疑是自己之前的自動刪除日子的指令碼 執行失敗?還是遺漏了刪除該資料夾下的日誌。
發現都沒有問題,去檢視該計劃,發現有執行失敗報錯資訊
顯示無法正確登入,導致執行刪除任務失敗。
才想起前一段時間, 機房把所有伺服器的密碼已經變更了。
因為伺服器密碼全部更改。導致刪除日誌的計劃任務執行失敗。
只好重新設定密碼進行執行。