定时备份并清除系统日志的shell代码
一个备份并清除老日志Shell脚本,并附有一个清除日志(log)的shell脚本。
一、备份并清除老日志Shell脚本:
#!/bin/sh #backup eoslog #author www.jbxue.com #定义环境变量 EOS_HOME=/home/eos SAS_HOME=/home/eos/SAS # 测试主辅结点 if test -d '/home/eos/SAS/SAS1_web1' then SAS_LOG_HOME=$SAS_HOME/SAS1_web1/SAS_Domain/bin else SAS_LOG_HOME=$SAS_HOME/SAS2_web1/SAS_Domain/bin fi # 定义并创建日志备份目录 SAS_LOG_BAK_HOME=$EOS_HOME/saslog/ mkdir -p $SAS_LOG_BAK_HOME # 切换目录为EOS日志文件目录 cd $SAS_LOG_HOME # 获取当前系统日期 TODAY=`date +%Y%m%d` # 备份当前日志 cp nohup.out $SAS_LOG_BAK_HOME/$TODAY.log # 清除当前日志 touch nohup.null cp nohup.null nohup.out -f rm nohup.null # 清除七天前的日志 for rmfile in `find $SAS_LOG_BAK_HOME -ctime +7 `; do /bin/rm -rf $rmfile; done
二、将脚本加入操作系统的crontab 中,直接VI加入即可
[eos@xcfwbz1 SAS]$ crontab -l 59 23 * * * /home/eos/SAS/backup_eoslog.sh
上面表示每天23:59分执行该脚本
清除日志(log)的shell脚本
#!/bin/bash #by www.jbxue.com LOG_DIR=/var/log ROOT_UID=0 LINES=50 E_XCD=66 E_NOTROOT=67 if [ "$UID" -ne "$ROOT_UID" ] then echo "Must be root to run this script." exit $E_NOTROOT fi if [ -n "$1" ] then lines=$1 else lines=$LINES fi cd $LOG_DIR if [ `pwd` != "$LOG_DIR" ] then echo "Can't change to $LOG_DIR." exit $E_XCD fi tail -$lines messages > mesg.temp mv mesg.temp messages echo "Logs cleaned up." exit 0