1、MySql数据库自动备份.sh
#!/bin/bash #This is a ShellScript For Auto DB Backup #Powered by aspbiz@163.com #2004-09 #Setting DBName=mysql DBUser=root DBPasswd= BackupPath=/root/ LogFile=/root/db.log DBPath=/var/lib/mysql/ #BackupMethod=mysqldump #BackupMethod=mysqlhotcopy #BackupMethod=tar #Setting End NewFile="$BackupPath"db$(date +%y%m%d).tgz DumpFile="$BackupPath"db$(date +%y%m%d) OldFile="$BackupPath"db$(date +%y%m%d --date='5 days ago').tgz echo "-------------------------------------------" >> $LogFile echo $(date +"%y-%m-%d %H:%M:%S") >> $LogFile echo "--------------------------" >> $LogFile #Delete Old File if [ -f $OldFile ] then rm -f $OldFile >> $LogFile 2>&1 echo "[$OldFile]Delete Old File Success!" >> $LogFile else echo "[$OldFile]No Old Backup File!" >> $LogFile fi if [ -f $NewFile ] then echo "[$NewFile]The Backup File is exists,Can't Backup!" >> $LogFile else case $BackupMethod in mysqldump) if [ -z $DBPasswd ] then mysqldump -u $DBUser --opt $DBName > $DumpFile else mysqldump -u $DBUser -p$DBPasswd --opt $DBName > $DumpFile fi tar czvf $NewFile $DumpFile >> $LogFile 2>&1 echo "[$NewFile]Backup Success!" >> $LogFile rm -rf $DumpFile ;; mysqlhotcopy) rm -rf $DumpFile mkdir $DumpFile if [ -z $DBPasswd ] then mysqlhotcopy -u $DBUser $DBName $DumpFile >> $LogFile 2>&1 else mysqlhotcopy -u $DBUser -p $DBPasswd $DBName $DumpFile >>$LogFile 2>&1 fi tar czvf $NewFile $DumpFile >> $LogFile 2>&1 echo "[$NewFile]Backup Success!" >> $LogFile rm -rf $DumpFile ;; *) /etc/init.d/mysqld stop >/dev/null 2>&1 tar czvf $NewFile $DBPath$DBName >> $LogFile 2>&1 /etc/init.d/mysqld start >/dev/null 2>&1 echo "[$NewFile]Backup Success!" >> $LogFile ;; esac fi echo "-------------------------------------------" >> $LogFile
2、日志自动清除脚本
定时如下: * * * * * /shell/autodeletelog.sh>/dev/null 2>&1 脚本内容: #!/bin/sh /usr/bin/find /var/log/ -name "messag*" -mtime +10 -print | /usr/bin/xargs /bin/rm -f /usr/bin/find /var/log/ -name "secur*" -mtime +10 -print | /usr/bin/xargs /bin/rm -f /usr/bin/find /var/log/ -name "maill*" -mtime +10 -print | /usr/bin/xargs /bin/rm -f /usr/bin/find /var/log/ -name "dhcp*" -mtime +10 -print | /usr/bin/xargs /bin/rm -f /usr/bin/find /var/log/ -name "cro*" -mtime +10 -print | /usr/bin/xargs /bin/rm -f exit
3、实时监控linux系统日志,就可以知道系统的启动时间等等! 以下脚本主要是为了监控系统产生的日志,只要是日志里有的都可以加进去作监控内容,并且实时生成想要的日志文件,以留备查!注:如果系统的日志功能已经被破坏,本方法则就无效了。 vi run_log.sh#!/bin/bash
while [ true ]; do DATE=`date +%Y%m%d` tail -f /var/log/message | egrep "(syslogd 1.4.1: restart | LOGIN ON )" >>/home/log/run_syslog.$DATE sleep 2 done
chmod u+x run_log.sh
-------------------------------------------------------------------------tail -f /var/log/message | egrep "(syslogd 1.4.1: restart | LOGIN ON )" >>/home/log/run_syslog.$DATE 在以上脚本中,(syslogd 1.4.1: restart | LOGIN ON ) 是可以按需求情况来添加监控系统日志文件中存在的内容的,不同内容中间用| 来隔开 --------------------------------------------------------------------------
另外注意一定要把本脚本文件加入到系统启动文件中,即让系统启动后自动运行这个脚本才能启动监控作用,加入方法如下: vi /etc/rc.d/rc.local #!/bin/sh # # This script will be executed *after* all the other init scripts. # You can put your own initialization stuff in here if you don't # want to do the full Sys V style init stuff. touch /var/lock/subsys/local sh /usr/run_log.sh 保存退出即可,让系统重新启动一下,用ps -ef|grep run_log.sh检查这个脚本是否已经启动,或者查看/home/log/下是否有run_syslog.2004-08-07该文件。 这样成功后,以后就知道什么时候服务器被重新启动了,什么时候有人登陆了服务器系统了。^_^。。这下是不是可以放心多做些其他的事情了,不要为了不知道系统什么时候已经被hacker登陆过了,自己都不知道。只要经常去查看产生的日志文件就可以啦。 4、在unix系统中实现自动备份和自动清楚日志文件
-------------------------------------------------------------- 执行备份和清空当前使用的日志文件,clear_countlog.sh zcatlinux, zcatlinux@yahoo.com.cn , 2004-06-28 --------------------------------------------------------------- #!/bin/bash LOGFILE=/var/count.log DATE=`date +%Y%m%d`
if [ -f $LOGFILE ] then cp $LOGFILE $LOGFILE-$DATE find /var/ -ctime 3 -name count/* -exec rm {} /; echo "" >$LOGFILE fi
------------------------------------------------- 在crontab中实现每天执行以上脚本一次! -------------------------------------------------
10 3 × × × root /home/clear_countlog.sh
5、只要监控程序的日志也可以实现程序的启动
#!/bin/bash
while [ 1 ] ; do JSPROG=`ps -ef | grep jsrun | sed -e '/grep/d'` if [ "$PROG" ]; then JSLOG=`tail -n 12 /var/jmis/log/nohup.out | grep "over stop" | wc -l` if [ $JSLOG -gt 0 ]; then cd /var/jmis/bin/ nohup /var/jmis/bin/jsrun.sh & else sleep 60 fi else cd /var/jmis/bin/ nohup /var/jmis/bin/jsrun.sh & sleep 120 fi done
6、让系统自动查找删除文件的办法!
#!/bin/bash find /home/log/ -ctime 3-name bbslog/* -exec rm {} /; ##查找前第三天的bbslog文件,并删除 find /tmp/log/ -ctime +4 -name mail/* -exec rm {} /; ##查找4天前的所有mail日志文件,并全部删除
7、在linux和Solaris下面分别配置crontab
##set crontab time if [ "$OS" = "Linux" ];then echo "10 3 * * * root /usr/glog.sh" >>/etc/crontab service crond restart else echo "10 3 * * * /usr/glog.sh" >>/var/spool/cron/crontabs/root for PID in `ps -ef | grep cron | sed -e '/grep/d'| awk '{print $2}'` do kill -9 $PID done rm -rf /etc/cron.d/FIFO /usr/sbin/cron fi