shell 删除七日内日志_SHELL脚本定期删除日志文件(日志定期清理)
假設(shè)我們的應(yīng)用每天會產(chǎn)生一個(gè)日志文件,但我們并沒有對日志文件做任何歸檔處理,久而久之日積月累,就會將磁盤空間占滿,從而影響系統(tǒng)的正常運(yùn)行。
分析磁盤空間占用情況
#當(dāng)前磁盤空間占用情況
df -h
#當(dāng)前目錄文件大小列表
ll -lh
#文件列表按時(shí)間排序
ll -rt
#文件大小列表,按時(shí)間排序
ll -lhrt
#查詢20天前的日志
find * -name 'server02.log007*' -mtime +20
#刪除20天前的日志
find * -name 'server02.log007*' -mtime +20 -exec rm -rf {} \;
那么,如何定期清理過期的日志文件呢?
方法一:應(yīng)用實(shí)現(xiàn)
方法二:shell腳本定期清理
應(yīng)用實(shí)現(xiàn)的方式這里就不做過多的介紹,本文著重講解下如何編寫shell腳本定期清理日志文件。
步驟一:編寫自動清理日志文件shell腳本
#!/bin/bash
log_path="/home/server/core/logs/app"
#目錄存在,刪除修改時(shí)間為7天前的文件
if [ -d "${log_path}" ]; then
echo start delete log 7 days ago...
find "${log_path}"/* -name '*.log.gz' -mtime +240 -exec rm -rf {} \;
echo end delete log ...
fi
# :wq! 保存并退出
步驟二:腳本文件授權(quán)(可執(zhí)行權(quán)限)
# chmod +x logAutoClean.sh
測試一下:
# sh logAutoClean.sh
步驟三:創(chuàng)建crontab定時(shí)任務(wù)
# crontab –e
進(jìn)入編輯頁面(第一次進(jìn)入會讓你選擇編輯器,這里我們選擇3[vim.basic]就ok)。設(shè)置每天凌晨1點(diǎn)執(zhí)行(假定清除腳本在目錄/home/server/core/logs/app下),編輯crontab,增加如下行:
00 01 * * * /home/server/core/logs/app/logAutoClean.sh可先設(shè)置五分鐘執(zhí)行一次,測試下腳本
*/5 * * * * /home/server/core/logs/app/logAutoClean.sh如果定時(shí)任務(wù)不生效,重啟下crond服務(wù)
# service crond restart //重啟服務(wù)
附錄:crontab用法說明crontab命令用于安裝、刪除或者列出用于驅(qū)動cron后臺進(jìn)程的表格。用戶把需要執(zhí)行的命令序列放到crontab文件中以獲得執(zhí)行。
每個(gè)用戶都可以有自己的crontab文件。/var/spool/cron下的crontab文件不可以直接創(chuàng)建或者直接修改。該crontab文件是通過crontab命令創(chuàng)建的
在crontab文件中如何輸入需要執(zhí)行的命令和時(shí)間。該文件中每行都包括六個(gè)域,其中前五個(gè)域是指定命令被執(zhí)行的時(shí)間,最后一個(gè)域是要被執(zhí)行的命令。
每個(gè)域之間使用空格或者制表符分隔。格式如下:
格 式: minute hour day-of-month month-of-year day-of-week commands
合法值: 00-59 00-23 01-31 01-12 0-6 (0 is sunday)
除了數(shù)字還有幾個(gè)個(gè)特殊的符號就是"*"、"/"和"-"、",",*代表所有的取值范圍內(nèi)的數(shù)字,"/"代表每的意思,"/5"表示每5個(gè)單位,"-"代表從某個(gè)數(shù)字到某個(gè)數(shù)字,","分開幾個(gè)離散的數(shù)字。
crontab 命令
-l 在標(biāo)準(zhǔn)輸出上顯示當(dāng)前的crontab。
-r 刪除當(dāng)前的crontab文件。
-e 使用VISUAL或者EDITOR環(huán)境變量所指的編輯器編輯當(dāng)前的crontab文件。當(dāng)結(jié)束編輯離開時(shí),編輯后的文件將自動安裝。
總結(jié)
以上是生活随笔為你收集整理的shell 删除七日内日志_SHELL脚本定期删除日志文件(日志定期清理)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何利用Python实现财务自由,如果你
- 下一篇: FastGithub:github加速神