Linux上清理oracle listener.log文件脚本,配合crontab定时清理大于1000MB的listener.log
#!/bin/bash# This script is used to clean up Oracle Database listener.log on Linux# Please use the Oracle DB installation user(such as oracle) to execute the script# Originally written by Xander.Cui# Use two methods to obtain the absolute path of listener.log, only for detection.# 2. Obtain the standard listener.log file name# export listenerlog=$ORACLE_BASE/diag/tnslsnr/$(hostname)/listener/trace/listener.log# export listenerlogbak=$listenerlog-$DateMarksource ~/.bash_profileexport DateMark=$(date +'%Y%m%d')export DT=$(date +'%F %T')# Check if the log directory exists, create it if it does not existexport logdir=~/logexport checklog=$logdir/listenerlog_check.logif [ ! -d $logdir ]; then mkdir -p $logdir echo " $DT Checked: Created $logdir " >$checklogfi# 1. Obtain listener.log through lsnrctl statusexport xmlfile=$(lsnrctl status | grep "log.xml" | awk '{print $4}')export prefixlog=${xmlfile%%/alert*}export listenerfile=$prefixlog/trace/listener.logexport listenerfilebak=$listenerfile-$DateMark# Calculate the size of the listener.log file in MB, Use the file name obtained by method 1export logsizemb=$(du -sm $listenerfile | awk '{print $1}')# Operating listener.log fileif [ $logsizemb -gt 1000 ]; then echo "*************** Moved ************** $DT Checked: Backup Logfile $listenerfile to $listenerfilebak.tar.gz " >>$checklog mv $listenerfile $listenerfilebak;tar -zcPf $listenerfilebak.tar.gz $listenerfilebak --remove-fileselse echo "$DT Checked: Logfile($listenerfile) Size < 1000 MB, Do nothing." >>$checklogfi# End
应用命令增加定时工作
(crontab -l | grep -v check_listenerlog) | crontab(crontab -l ; echo "0 18 * * * bash ~/scripts/check_listenerlog.sh") | crontab