背景: 開發環境總是動不動就沒有空間了, 大部分都是debug日志。所以有必要在日志很瘋狂的時候,刪除不必要的日志。
思路:一、 書寫刪除日志文件腳本; 定時任務執行。 但是有時候的日志是需要保存用來查詢的。所以不完美。
二、 刪除腳本保存,定時任務去查詢系統空間是否到達臨界值,到達則刪除,否則不進行任何操作。
日志刪除腳本:
#!/bin/sh date "+%Y-%m-%d %H:%M:%S" echo ==========before rm========== df -h echo echo current dir size: du -sh echo find /logs -name "log.out.*" -user $USER -exec rm -f {} \; find /logs -name "log-201*.out" -user $USER -exec rm -f {} \; find /logs -name "facade.out.*" -user $USER -exec rm -f {} \; find /logs -name "monitorlog.out.*" -user $USER -exec rm -f {} \; find /logs -name "monitordetaillog.out.*" -user $USER -exec rm -f {} \; find /logs -name "catalina.out.*" -user $USER -exec rm -f {} \; find /logs -name "catalina.2*" -user $USER -exec rm -f {} \; if [ ! -f .cleanFile.sh ]; then echo "cat /dev/null>\$1">.cleanFile.sh chmod +x .cleanFile.sh fi find /logs -name "catalina.out" -user $USER -exec ./.cleanFile.sh {} \; find /logs -name "log.out" -user $USER -exec ./.cleanFile.sh {} \; echo ==========after rm=========== df -h echo echo current dir size: du -sh echo
定時刪除任務:
1 4 * * * /logs/rmlog.sh>>/logs/rmlog.sh.log
指定大小刪除的定時任務:
# 查詢使用多少空間 mya="df -h | sed -n '3p;' | awk '{print $2}' | sed 's/G//'" # 如果空間不夠,則執行日志刪除腳本 awk 'BEGIN{ if($mya>34){cmd="sh /logs/rmlog.sh"; system(cmd);}else{cmd="echo nothing"; system(cmd);}}' # 定時任務 */2 * * * * awk 'BEGIN{ if($mya>34){cmd="sh /logs/rmlog.sh"; system(cmd);}else{cmd="echo nothing"; system(cmd);}}'
歡迎交流!!!