1.用于杀死mysql里出现的僵死进程
#!/bin/bash
while :
do
n=`/usr/local/mysql/bin/mysqladmin -uroot -p123456quanlian processlist | grep -i sleep | wc -l`
date=`date +%Y%m%d\[%H:%M:%S]`
echo $n
if [ "$n" -gt 10 ]
then
for i in `/usr/local/mysql/bin/mysqladmin -uroot -p123456quanlian processlist | grep -i sleep | awk '{print $2}'`
do
/usr/local/mysql/bin/mysqladmin -uroot -p123456quanlian kill $i
done
echo "sleep is too many i killed it" >> /tmp/sleep.log
echo "$date : $n" >> /tmp/sleep.log
fi
sleep 5
done
2.自动显示硬盘使用情况
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin:/usr/sbin:/sbin
export PATH
unset USERNAME
df -lh
3.mysql日志切割
#/bin/bash
aa=/var/log/mysqld/mysql.err
bb=/usr/local/mysql/var/mysql.log
cc=/var/log/mysqld/query.log
mv $aa /var/log/mysqld/mysql`date +%Ym%d`.err
mv $bb /var/log/mysqld/mysql`date +%Ym%d`.log
mv $cc /var/log/mysqld/query`date +%Ym%d`.log
/usr/local/mysql/bin/mysqladmin -uroot -pXXX --socket=/tmp/mysql.sock flush-logs
find /var/log/mysqld3308 -ctime +7 -exec rm -rf {} \;
4.检查mysql状态
#/bin/bash
service mysqld status &> /dev/null
if [ $? -ne 0 ] ; then
echo "At time: 'data': mysql service is down. " >> /var/log/messages
service mysqld restart
fi
5.备份脚本
数据库备份脚本
#!/bin/bash
DAY=`date+%Y%m%d`
SIZE=`du-sh /data/mysql/3306/data/fmcmall`
MYSQLDUMP="/usr/local/webserver/mysql/bin/mysqldump"
MYSQLPASSWORD=`cat/data/save/mysql_root`
echo"Date: $DAY" >> /tmp/dbinfo.txt
echo"Date Size: $SIZE" >> /tmp/dbinfo.txt
$MYSQLDUMP-uroot -p$MYSQLPASSWORD fmcmall1203 > /data/dbbak/fmcmall.sql
tar zcvf/data/dbbak/cncar_dbbak/fmcmall-${DAY}.tar.gz /data/dbbak/fmcmall.sql/tmp/dbinfo.txt
rm -rf/tmp/dbinfo.txt
rm -rf/data/dbbak/fuyidata.sql
6.物理文件备份脚本
#!/bin/bash
DAY=`date+%Y%m%d`
cd/data/mfcmall/web/
#SIZE=`du-sh cncar`
echo"Date: $DAY" >> /tmp/dbinfo.txt
#echo"Date Size: $Size" >> /tmp/dbinfo.txt
tar zcvf/data/web_bak/www_cncar_bak/cncarweb_bak-${DAY}.tar.gz /data/mfcmall/web/cncar/--exclude=/data/mfcmall/web/cncar/temp/caches/* --exclude=/data/mfcmall/web/cncar/data/files/store_23_old/*--exclude=/data/mfcmall/web/cncar/data/files/store_23_new/*
rm -rf/tmp/dbinfo.txt
7.查看服务器系统信息
#!/bin/bash
THE_CPU=`cat/proc/cpuinfo | grep name | cut -f2 -d: | uniq -c`
cpu=`cat/proc/cpuinfo | grep physical | uniq -c `
system=`getconfLONG_BIT`
neichun=`free`
neihe=`uname-a`
eth=`dmesg| grep -i eth`
issue=`cat/etc/issue`
echo"一..........................CUP 型号"
echo$THE_CPU
echo"二..................CPU 实际颗数核数"
echo $cpu
echo"三..........................系统位数"
echo$system
echo"四..........................内存信息"
echo$neichun
echo"五..........................内核信息"
echo$neihe
echo"六..........................网卡信息"
echo $eth
echo"七....................系统发行版信息"
echo$issue
8.检测网站页面是否正常
#!/bin/bash
wget http://www.cncar.com/test200.php --spider
c_monitor=$?
if [$c_monitor = "1" ];
then
echo"www.efuyi.com is down,服务器网站不能正常访问,请马上汇报哦, time: " $(date+"%y-%m-%d %H:%M:%S") "restart lnmp.. " | mail -s"Critical Info: Website is offline." 15218834160@139.com
/usr/local/webserver/php/sbin/php-fpmrestart
echo"restart lnmp: php-fpm"
fi
以上 “8” 的补充:
监控NMP脚本
[root@www shell]# cat check_PHP_MYSQL_NGINX.sh
#!/bin/bash
wget http://www.cncar.com/test200.php --spider
c_monitor=$?
#nginx返回的错误状态为4,PHP返回的错误状态为8,所以,,, 但为了保障,加上如果返回状态不等于0(0属于正常),则发邮件警告
if [ $c_monitor = "1" ] || [ $c_monitor = "4" ] || [ $c_monitor = "8" ] || [ $c_monitor -ne "0" ];
then
echo "# Error no 200 status, time: " $(date +"%y-%m-%d %H:%M:%S") "WEB IS DOWN" | mail -s "Critical Info: Website is offline." 15218402325@139.com
fi
# wget http://www.cncar.com/index.php --spider
# c_monitor2=$?
# if [ $c_monitor2 = "1" ] || [ $c_monitor2 = "4" ] || [ $c_monitor2 = "8" ] || [ $c_monitor2 = "130" ];
# then
# echo "# Error no 200 status, time: " $(date +"%y-%m-%d %H:%M:%S") "hello" | mail -s "Critical Info: Website is offline." 15218402325@139.com
# fi
############################ check the MySQL(MYSQL在本地) ###################################
/etc/init.d/mysqld status &> /dev/null
if [ $? -ne 0 ] ; then
echo "At time: 'data': mysql service is down. " >> /var/log/messages
echo "# MySQL Error status, time: " $(date +"%y-%m-%d %H:%M:%S") "MYSQL IS DOWN" | mail -s "Critical Info: Website is offline." 15218402325@139.com
/usr/bin/killall mysqld
/etc/init.d/mysqld restart
fi
在PHP本地上监控PHP:
[root@www shell]# cat cheak_php_status.sh
#!/bin/bash
wget http://www.cncar.com/test200.php --spider
c_monitor=$?
if [ $c_monitor = 1 ] || [ $c_monitor = 4 ] || [ $c_monitor = 8 ] || [$c_monitor -ne 0 ];
then
/usr/local/webserver/php/sbin/php-fpm restart
fi
这个是试图让PHP重启以临时恢复,回头再找问题。
9.rsync物理文件同步
#!/bin/bash
/usr/local/rsync/bin/rsync -avz --progress --delete root@124.172.223.141::141fmcmall /data/dbbak/rsync_from_124.172.223.141_fmcmall/--password-file=/etc/rsyncd.pwd
10.检查“/var/log/messages” 文件是否存在,若存在则统计文件内容的行数,否则不做任何操作。
#!/bin/bsh
LogFile="/var/log/messages"
if [ -f $LogFile ]; then
wc -l $LogFile
fi
11.检查portmap 进程是否已经存在,若存在则输出“portmap service is running.” , 否则检查是否存在“/etc/rc.d/init.d/portmap” 可执行脚本,存在则启动portmap 服务,否则提示 “no portmap script file.”
#!/bin/bash
pgrep portmap & > /dev/null
if [ $? -eq 0 ]; then
echo "portmap service is running."
elif [ -x "/etc/rc.d/init.d/portmap" ] ; then
service portmap start
else
echo "no portmap script file."
fi