
簡介:
系統(tǒng)日志對于了解操作系統(tǒng)的運行狀況、故障排除和性能分析至關重要。然而,長期積累的日志文件可能變得龐大,影響系統(tǒng)性能。在這篇文章中,我們將介紹一個自動化的解決方案,使用 Bash 腳本來監(jiān)控和維護系統(tǒng)日志文件,以確保它們的大小合理,避免磁盤爆滿,并保持內容的整潔和高效。
問題背景:
在使用ELK日志收集海量日志時,服務器系統(tǒng)里日志文件會隨著時間變的越來越大,如果不定時清理舊數(shù)據(jù),長期下去會導致磁盤爆滿影響系統(tǒng)運行。
腳本原理:
使用Bash 腳本遍歷循環(huán)檢查日志文件夾里所有文件大小,超過設定閾值就自動清空。
定時任務調度:
使用 crontab 定時任務,將腳本定期執(zhí)行,確保日志維護持續(xù)進行。
crontab -e
0 0 * * * /usr/local/scripts/monitor_log.sh
注意事項: 該腳本執(zhí)行時間不可以低于日志文件大小最小值,間隔盡可能長,例如每隔一天執(zhí)行一次。文章來源:http://www.zghlxwxcb.cn/news/detail-692318.html
腳本如下文章來源地址http://www.zghlxwxcb.cn/news/detail-692318.html
#!/bin/bash
# 指定要監(jiān)視日志的文件夾
watch_folder="/var/log/zccpe"
# 閾值文件大小(500M)
threshold_size=$((500*1024*1024)) # 500M in bytes
while true; do
# 獲取文件夾下所有文件
files=("$watch_folder"/*)
for file_to_watch in "${files[@]}"; do
if [ -f "$file_to_watch" ]; then
# 獲取文件大小(以字節(jié)為單位)
file_size=$(wc -c < "$file_to_watch")
if [ "$file_size" -ge "$threshold_size" ]; then
# 當文件大小達到或超過閾值時,刪除前1天的行
sed -i '1,691200d' "$file_to_watch"
fi
fi
done
break # 退出循環(huán)
# 休眠一段時間再次檢查(例如,每小時檢查一次)
#sleep 86400 # 3600秒 = 1小時
done
到了這里,關于Shell自動化日志維護腳本的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!