事件背景
服務應用weblogic通過nohup啟動.
nohup的使用全部都在weblogic域中的bin目錄下
但是沒有做定期nohup.out的清理
導致核心服務的日志過大,在出現問題時候難以打開日志進行問題定位
處理方法
crontab 加腳本每天凌晨清理備份一次nohup日志
腳本如下
#!/bin/bash
#ENV
DATE=$(date +"%m-%d")
BASE=$(awk -F"'" '/gobin/{print $2}' ~/.bashrc|awk '{print $2}')
FILE=$BASE'log'
LOG=$BASE'nohup.out'
#Check if the log file exist
if [ ! -d $FILE ];then
mkdir $FILE
fi#Backup the log to the FILE
echo "$DATE"
echo '#Back up the log file#'
cp $LOG $FILE/$DATE.log#Clean today's log
echo 'Start to clear..'
cp /dev/null $LOG#Delete files from seven days ago
find $FILE -type f -mtime +7 -name "*.log" -exec rm {} \;
echo '#Finished.#'
腳本ENV取當前變量說明
目的腳本要適應多台服務器中的weblogic域路徑,
利用weblogic用戶下的alias(里面在部署項目時候設置有域的bin路徑)
cat ~/.bashrc
# .bashrc# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi...
export PS1="<\! `hostname` [`whoami`] :"'$PWD'">"
alias gobin='cd /home/weblogic/bea/user_projects/domains/pro_domain/bin/'
...
# User specific aliases and functions
截取里面域的路徑
BASE=$(awk -F"'" '/gobin/{print $2}' ~/.bashrc|awk '{print $2}')
通過自動獲取域的路徑,同時通過ansible批發到核心服務當中.
再配合crontab實現核心服務器日志的定期清理