一些Linux 脚本的应用...
2012-04-20 11:59
399 查看
.............记录下来.............
1. Mysql 自动备份
--------------------------------------------------------------------------
#!/bin/bash
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
suffix=$(date +%m-%d-%Y)
cpath=/home/backup #备份目录
dblist=(test) #备份数据库
for ((i=0; i<${#dblist[@]};i++))
do
if [ -d $cpath ]
then
filler="just some action to prevent syntax error"
else
mkdir -p $cpath
fi
#now backup db
sqlfile=${cpath}/${dblist[$i]}_$suffix.sql.gz
/usr/local/mysql/bin/mysqldump --flush-logs -uroot -pXXXXXXX --add-drop-table ${dblist[$i]}|gzip -c > $sqlfile
if [ $? -eq 0 ]
then
echo "$suffix sucess"
else
echo "$suffix failed"
fi
done
#
find $cpath -name "*.sql.gz" -mtime 2|xargs rm -rf #备份保留2次!
--------------------------------------------------------------------------
服务器性能监控脚本
-------------------------------------------------------------------------
#!/bin/bash
#监控cpu系统负载
IP=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "`
cpu_num=`grep -c 'model name' /proc/cpuinfo`
count_uptime=`uptime |wc -w`
load_15=`uptime | awk '{print $'$count_uptime'}'`
average_load=`echo "scale=2;a=$load_15/$cpu_num;if(length(a)==scale(a)) print 0;print a" | bc`
average_int=`echo $average_load | cut -f 1 -d "."`
load_warn=0.70
if [ $average_int -gt 0 ]
then
echo "$IP服务器单个核心15分钟的平均负载为$average_load,超过警戒值1.0,请立即处理!!!$(date +%Y%m%d/%H:%M:%S)" >>/root/logs/performance_$(date +%Y%m%d).log
echo "$IP服务器单个核心15分钟的平均负载为$average_load,超过警戒值1.0,请立即处理!!!$(date +%Y%m%d/%H:%M:%S)" | mail -s "$IP服务器系统负载严重告警" jicki@qq.com
else
echo "$IP服务器单个核心15分钟的平均负载值为$average_load,负载正常 $(date +%Y%m%d/%H:%M:%S)">>/root/logs/performance_$(date +%Y%m%d).log
fi
#监控cpu使用率
cpu_idle=`top -b -n 1 | grep Cpu | awk '{print $5}' | cut -f 1 -d "."`
if [ $cpu_idle -lt 20 ]
then
echo "$IP服务器cpu剩余$cpu_idle%,使用率已经超过80%,请及时处理。">>/root/logs/performance_$(date +%Y%m%d).log
echo "$IP服务器cpu剩余$cpu_idle%,使用率已经超过80%,请及时处理!!!" | mail -s "$IP服务器cpu告警" jicki@qq.com
else
echo "$IP服务器cpu剩余$cpu_idle%,使用率正常">>/root/logs/performance_$(date +%Y%m%d).log
fi
#监控交换分区
swap_total=`free -m | grep Swap | awk '{print $2}'`
swap_free=`free -m | grep Swap | awk '{print $4}'`
swap_used=`free -m | grep Swap | awk '{print $3}'`
if [ $swap_used -ne 0 ]
then
swap_per=0`echo "scale=2;$swap_free/$swap_total" | bc`
swap_warn=0.20
swap_now=`expr $swap_per \> $swap_warn`
if [ $swap_now -eq 0 ]
then
echo "$IP服务器swap交换分区只剩下 $swap_free M 未使用,剩余不足20%,使用率已经超过80%,请及时处理。">>/root/logs/performance_$(date +%Y%m%d).log
echo "$IP服务器swap交换分区只剩下 $swap_free M 未使用,剩余不足20%, 使用率已经超过80%, 请及时处理。" | mail -s "$IP服务器内存告警" jicki@qq.com
else
echo "$IP服务器swap交换分区剩下 $swap_free M未使用,使用率正常">>/root/logs/performance_$(date +%Y%m%d).log
fi
else
echo "$IP服务器交换分区未使用" >>/root/logs/performance_$(date +%Y%m%d).log
fi
#监控磁盘空间
disk_sda1=`df -h | grep /dev/sda1 | awk '{print $5}' | cut -f 1 -d "%"`
if [ $disk_sda1 -gt 80 ]
then
echo "$IP服务器 /根分区 使用率已经超过80%,请及时处理。">>/root/logs/performance_$(date +%Y%m%d).log
echo "$IP服务器 /根分区 使用率已经超过80%,请及时处理。 " | mail -s "$IP服务器硬盘告警" jicki@qq.com
else
echo "$IP服务器 /根分区 使用率为$disk_sda1%,使用率正常">>/root/logs/performance_$(date +%Y%m%d).log
fi
#监控登录用户数
users=`uptime |awk '{print $6}'`
if [ $users -gt 2 ]
then
echo "$IP服务器用户数已经达到$users个,请及时处理。">>/root/logs/performance_$(date +%Y%m%d).log
echo "$IP服务器用户数已经达到$users个,请及时处理。" | mail -s "$IP服务器用户登录数告警" jicki@qq.com
else
echo "$IP服务器当前登录用户为$users个,情况正常">>/root/logs/performance_$(date +%Y%m%d).log
fi
-------------------------------------------------------------------------
流量监控脚本
-------------------------------------------------------------------------
#!/bin/bash
#
R1=`cat /sys/class/net/eth0/statistics/rx_bytes`
T1=`cat /sys/class/net/eth0/statistics/tx_bytes`
sleep 1
R2=`cat /sys/class/net/eth0/statistics/rx_bytes`
T2=`cat /sys/class/net/eth0/statistics/tx_bytes`
TBPS=`expr $T2 - $T1`
RBPS=`expr $R2 - $R1`
TKBPS=`expr $TBPS / 1024`
RKBPS=`expr $RBPS / 1024`
echo "上传速率 eth0: $TKBPS kb/s 下载速率 eth0: $RKBPS kb/s at $(date +%Y%m%d%H:%M:%S)" >>/root/logs/network_$(date +%Y%m%d).log
--------------------------------------------------------------------------------
流量日志分析
-------------------------------------------------------------------------
#!/bin/bash
#
TX=0;
RX=0;
MAX_TX=0;
MAX_RX=0;
while read line
do
a=`echo $line | grep "eth0" |awk '{print $3}'`
if [ $a -ge 0 ]
then
TX=$a
if [ $TX -ge $MAX_TX ]
then
MAX_TX=$TX
fi
fi
b=`echo $line | grep "eth0" |awk '{print $7}'`
if [ $b -ge 0 ]
then
RX=$b
if [ $RX -ge $MAX_RX ]
then
MAX_RX=$RX
fi
fi
done < /root/logs/network_$(date +%Y%m%d).log
echo "最高上传速度为 $MAX_TX kb/s at $(date +%Y%m%d)">>/root/logs/tongji.log
echo "最高下载速度为 $MAX_RX kb/s at $(date +%Y%m%d)">>/root/logs/tongji.log
-----------------------------------------------------------------------
程序监控脚本
---------------------------------------------------------------------
#!/bin/bashIP=`/sbin/ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "`while truedopgrep nginx &> /dev/nullif [ $? -ne 0 ];then ulimit -SHn 65535 /opt/local/nginx/sbin/nginxsleep 5spgrep nginx &> /dev/nullif [ $? -eq 0 ]; then echo 'Nginx start ok!' >>/root/shell/service.log else echo "Nginx start error!" | mail -s "=?UTF-8?B?`echo "$IP Nginx 错误告警" | base64`?=" xxx@qq.com fifi
pgrep php-fpm &>/dev/nullif [ $? -ne 0 ]; then ulimit -SHn 65535 /opt/local/php/sbin/php-fpmsleep 5spgrep php-fpm &>/dev/nullif [ $? -eq 0 ]; then echo 'PHP start ok!' >>/root/shell/service.log else echo "PHP start error!" | mail -s "=?UTF-8?B?`echo "$IP PHP 错误告警" | base64`?=" xxx@qq.com fifi
done
-----------------------------------------------------------------
1. Mysql 自动备份
--------------------------------------------------------------------------
#!/bin/bash
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
suffix=$(date +%m-%d-%Y)
cpath=/home/backup #备份目录
dblist=(test) #备份数据库
for ((i=0; i<${#dblist[@]};i++))
do
if [ -d $cpath ]
then
filler="just some action to prevent syntax error"
else
mkdir -p $cpath
fi
#now backup db
sqlfile=${cpath}/${dblist[$i]}_$suffix.sql.gz
/usr/local/mysql/bin/mysqldump --flush-logs -uroot -pXXXXXXX --add-drop-table ${dblist[$i]}|gzip -c > $sqlfile
if [ $? -eq 0 ]
then
echo "$suffix sucess"
else
echo "$suffix failed"
fi
done
#
find $cpath -name "*.sql.gz" -mtime 2|xargs rm -rf #备份保留2次!
--------------------------------------------------------------------------
服务器性能监控脚本
-------------------------------------------------------------------------
#!/bin/bash
#监控cpu系统负载
IP=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "`
cpu_num=`grep -c 'model name' /proc/cpuinfo`
count_uptime=`uptime |wc -w`
load_15=`uptime | awk '{print $'$count_uptime'}'`
average_load=`echo "scale=2;a=$load_15/$cpu_num;if(length(a)==scale(a)) print 0;print a" | bc`
average_int=`echo $average_load | cut -f 1 -d "."`
load_warn=0.70
if [ $average_int -gt 0 ]
then
echo "$IP服务器单个核心15分钟的平均负载为$average_load,超过警戒值1.0,请立即处理!!!$(date +%Y%m%d/%H:%M:%S)" >>/root/logs/performance_$(date +%Y%m%d).log
echo "$IP服务器单个核心15分钟的平均负载为$average_load,超过警戒值1.0,请立即处理!!!$(date +%Y%m%d/%H:%M:%S)" | mail -s "$IP服务器系统负载严重告警" jicki@qq.com
else
echo "$IP服务器单个核心15分钟的平均负载值为$average_load,负载正常 $(date +%Y%m%d/%H:%M:%S)">>/root/logs/performance_$(date +%Y%m%d).log
fi
#监控cpu使用率
cpu_idle=`top -b -n 1 | grep Cpu | awk '{print $5}' | cut -f 1 -d "."`
if [ $cpu_idle -lt 20 ]
then
echo "$IP服务器cpu剩余$cpu_idle%,使用率已经超过80%,请及时处理。">>/root/logs/performance_$(date +%Y%m%d).log
echo "$IP服务器cpu剩余$cpu_idle%,使用率已经超过80%,请及时处理!!!" | mail -s "$IP服务器cpu告警" jicki@qq.com
else
echo "$IP服务器cpu剩余$cpu_idle%,使用率正常">>/root/logs/performance_$(date +%Y%m%d).log
fi
#监控交换分区
swap_total=`free -m | grep Swap | awk '{print $2}'`
swap_free=`free -m | grep Swap | awk '{print $4}'`
swap_used=`free -m | grep Swap | awk '{print $3}'`
if [ $swap_used -ne 0 ]
then
swap_per=0`echo "scale=2;$swap_free/$swap_total" | bc`
swap_warn=0.20
swap_now=`expr $swap_per \> $swap_warn`
if [ $swap_now -eq 0 ]
then
echo "$IP服务器swap交换分区只剩下 $swap_free M 未使用,剩余不足20%,使用率已经超过80%,请及时处理。">>/root/logs/performance_$(date +%Y%m%d).log
echo "$IP服务器swap交换分区只剩下 $swap_free M 未使用,剩余不足20%, 使用率已经超过80%, 请及时处理。" | mail -s "$IP服务器内存告警" jicki@qq.com
else
echo "$IP服务器swap交换分区剩下 $swap_free M未使用,使用率正常">>/root/logs/performance_$(date +%Y%m%d).log
fi
else
echo "$IP服务器交换分区未使用" >>/root/logs/performance_$(date +%Y%m%d).log
fi
#监控磁盘空间
disk_sda1=`df -h | grep /dev/sda1 | awk '{print $5}' | cut -f 1 -d "%"`
if [ $disk_sda1 -gt 80 ]
then
echo "$IP服务器 /根分区 使用率已经超过80%,请及时处理。">>/root/logs/performance_$(date +%Y%m%d).log
echo "$IP服务器 /根分区 使用率已经超过80%,请及时处理。 " | mail -s "$IP服务器硬盘告警" jicki@qq.com
else
echo "$IP服务器 /根分区 使用率为$disk_sda1%,使用率正常">>/root/logs/performance_$(date +%Y%m%d).log
fi
#监控登录用户数
users=`uptime |awk '{print $6}'`
if [ $users -gt 2 ]
then
echo "$IP服务器用户数已经达到$users个,请及时处理。">>/root/logs/performance_$(date +%Y%m%d).log
echo "$IP服务器用户数已经达到$users个,请及时处理。" | mail -s "$IP服务器用户登录数告警" jicki@qq.com
else
echo "$IP服务器当前登录用户为$users个,情况正常">>/root/logs/performance_$(date +%Y%m%d).log
fi
-------------------------------------------------------------------------
流量监控脚本
-------------------------------------------------------------------------
#!/bin/bash
#
R1=`cat /sys/class/net/eth0/statistics/rx_bytes`
T1=`cat /sys/class/net/eth0/statistics/tx_bytes`
sleep 1
R2=`cat /sys/class/net/eth0/statistics/rx_bytes`
T2=`cat /sys/class/net/eth0/statistics/tx_bytes`
TBPS=`expr $T2 - $T1`
RBPS=`expr $R2 - $R1`
TKBPS=`expr $TBPS / 1024`
RKBPS=`expr $RBPS / 1024`
echo "上传速率 eth0: $TKBPS kb/s 下载速率 eth0: $RKBPS kb/s at $(date +%Y%m%d%H:%M:%S)" >>/root/logs/network_$(date +%Y%m%d).log
--------------------------------------------------------------------------------
流量日志分析
-------------------------------------------------------------------------
#!/bin/bash
#
TX=0;
RX=0;
MAX_TX=0;
MAX_RX=0;
while read line
do
a=`echo $line | grep "eth0" |awk '{print $3}'`
if [ $a -ge 0 ]
then
TX=$a
if [ $TX -ge $MAX_TX ]
then
MAX_TX=$TX
fi
fi
b=`echo $line | grep "eth0" |awk '{print $7}'`
if [ $b -ge 0 ]
then
RX=$b
if [ $RX -ge $MAX_RX ]
then
MAX_RX=$RX
fi
fi
done < /root/logs/network_$(date +%Y%m%d).log
echo "最高上传速度为 $MAX_TX kb/s at $(date +%Y%m%d)">>/root/logs/tongji.log
echo "最高下载速度为 $MAX_RX kb/s at $(date +%Y%m%d)">>/root/logs/tongji.log
-----------------------------------------------------------------------
程序监控脚本
---------------------------------------------------------------------
#!/bin/bashIP=`/sbin/ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "`while truedopgrep nginx &> /dev/nullif [ $? -ne 0 ];then ulimit -SHn 65535 /opt/local/nginx/sbin/nginxsleep 5spgrep nginx &> /dev/nullif [ $? -eq 0 ]; then echo 'Nginx start ok!' >>/root/shell/service.log else echo "Nginx start error!" | mail -s "=?UTF-8?B?`echo "$IP Nginx 错误告警" | base64`?=" xxx@qq.com fifi
pgrep php-fpm &>/dev/nullif [ $? -ne 0 ]; then ulimit -SHn 65535 /opt/local/php/sbin/php-fpmsleep 5spgrep php-fpm &>/dev/nullif [ $? -eq 0 ]; then echo 'PHP start ok!' >>/root/shell/service.log else echo "PHP start error!" | mail -s "=?UTF-8?B?`echo "$IP PHP 错误告警" | base64`?=" xxx@qq.com fifi
done
-----------------------------------------------------------------
相关文章推荐
- linux 启动脚本中无法自动启动后台应用的问题
- Linux——Shell脚本的基本应用
- Linux 日常应用的一些小笔记
- linux执行shell脚本的方式及一些区别
- [Android]Linux BASH脚本中cmp比较命令的应用例子
- 监测linux一些重要文件md5值脚本
- 学习一些在 Linux 上安装、运行和维护 Oracle 数据库所需的基本 bash shell 脚本。
- linux系统定期清理31天前的应用日志脚本
- linux 开机自动执行脚本或者一些指定的程序
- linux命令ORshell脚本语言OR Makefile文档里一些命令解析
- linux应用--freetype在linux-PC下的一些零碎知识
- linux 整理的一些小应用(待完善)
- linux 执行shell脚本的方式及一些区别
- Linux日常工作中常用快捷右键脚本(主要是android应用)
- linux 删除tomcat 及应用日志脚本
- 转:linux执行shell脚本的方式及一些区别
- 嵌入式linux开发中一些有用的shell脚本收集整理
- Linux下一些常用的Shell脚本整理
- Linux sysadmin(2): 网络、RPM包管理及一些脚本
- Linux数组及一些其他应用