码迷,mamicode.com
首页 > 系统相关 > 详细

Shell练习(四)

时间:2018-02-08 17:44:52      阅读:259      评论:0      收藏:0      [点我收藏+]

标签:bsp   find   监控   ack   习题   too   sql   passwd   pac   

习题1:备份数据库

要求:设计一个shell脚本来备份数据库,首先在本地服务器上保存一份数据,然后再远程拷贝一份,本地保存一周的数据,远程保存一个月

            假定,我们知道mysql root账号的密码,要备份的库为discuz,本地备份目录为/bak/mysql, 远程服务器ip为192.168.139.128,远程提供了一个rsync服务,备份的地址是 192.168.139.128::backup  .

            写完脚本后,需要加入到cron中,每天凌晨3点执行。

参考答案:

#!/bin/bash
# date:2018年2月8日
PATH=$PATH:/usr/local/mysql/bin/
d=`date +"%Y%m%d"`
passwd="your_mysql_password"
lo_bak_dir="/bak/mysql"
re_bak_dir="192.168.139.128::backup"
exec 1>/var/log/mysqlbak.log 2>/var/log/mysqlbak.log
echo "MySQL backup begin at `date +"%F %T"`."
mysqldump -uroot -p$passwd discuz > $lo_bak_dir/$d.sql
rsync -az $lo_bak_dir/$d.sql $re_bak_dir/$d.sql
echo "MySQL backup end at `date +"%F %T"`."

cron任务计划:0 3 * * * /bin/bash /usr/local/sbin/mysqlbak.sh

本地保存一周的数据,远程保存一个月: 

    使用find命令实现:find /lo_bak_dir/ -type f -name "*.sql" -exec rm -f {} \;


习题2:自动重启php-fpm服务

要求:服务器上跑的是LNMP环境,近期总是有502现象。502为网站访问的状态码,200正常,502错误是nginx最为普通的错误状态码。由于502只是暂时的,并且只要一重启php-fpm服务则502消失,但不重启的话,则会一直持续很长时间。所以有必要写一个监控脚本,监控访问日志的状态码,一旦发生502,则自动重启一下php-fpm。

我们设定:
1. access_log  /data/log/access.log
2. 脚本死循环,每10s检测一次(假设每10s钟的日志条数为300左右)
3. 重启php-fpm的方法是  /etc/init.d/php-fpm restart

参考答案:



Shell练习(四)

标签:bsp   find   监控   ack   习题   too   sql   passwd   pac   

原文地址:http://blog.51cto.com/11924224/2070307

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!