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