这篇文章给大家分享的是外壳脚本在实际工作中的应用。小编觉得挺实用的,因此分享给大家学习。如下资料是。
1) Mysql数据库备份脚本(完整备份+异地备份)
一般Mysql数据库备份会采用在Mysql从库上执行全量备份+增量备份方式。在从库备份避免Mysql主库备份的时候锁表造成业务影响。
<代码> # !/bin/bash, 设置- e,,,,,,,,,,,,#当脚本有错误时,便停止执行脚本 #备份的数据库名 数据库=( ,,,,,,“magedu01" ,,,,,,“magedu02" ) 用户=皉oot" 密码=癲bpwd123" 邮件=?23456 @163.com" BACKUP_DIR=/数据/备份 日志文件=/数据/备份/data_backup.log 日期=Y '日期+ % % m % d_ % H % m ' cd BACKUP_DIR美元 #开始备份之前,将备份信息头写入日记文件, 回声“- - - - - - - - - - - - - - - - - - - - - -“在比;美元的日志文件 回声“备份日期:“美元(日期+“y % - % - % d % H: % m: % S")在祝辞美元的日志文件 回声“- - - - - - - - - - - - - - - - - -产生绯闻;在比;美元的日志文件 在${}数据库;数据库 ,/usr/地方/mysql/bin/, mysqldump - u $ USER - p $密码——事件,- r——选择,数据库美元| gzip在$ {BACKUP_DIR} \/${数据库}_{日期}.sql.gz美元 ,如果[$ ?==0); ,,呼应“日期——数据库备份succeed"美元;在比;美元的日志文件 其他的, ,,呼应“数据库备份失败!“在比;美元的日志文件 ,fi 完成 #判断数据库备份是否全部成功,全部成功就同步到异地备份f服务器 如果[$ ?==0); ,/usr/bin/rsync -zrtopg,——删除,/数据/备份/* root@192.168.10.10:/数据/备份/,在/dev/null 2祝辞,1 其他的 ,呼应“数据库备份失败!“在比;美元的日志文件 ,#备份失败后向管理者发送邮件提醒 ,邮件- s“数据库日常备份失败!“美元的邮件 fi #删除30天以上的备份文件, 找到BACKUP_DIR美元,30 - name - type f -mtime +“* .gz"- rm - f{} \; 代码>
2) nginx进行日志切割的脚本
<代码> # !/bin/bash 设置- e,,,,,,,,,,,,#当脚本有错误时,便停止执行脚本 LOG_PATH=?var/log/nginx",,,#定义日志存放路径 ACCESS_LOG=癮ccess.log" ERROR_LOG=癳rror.log" 昨天=$(日期- d & # 39; 1天前# 39;+ % F),,,,#定义昨天的日期 因为我在$(找到$ {LOG_PATH} - name $ {ACCESS_LOG}); ,我,cd $(目录名$ {}) ,,如果[[- f $ {ACCESS_LOG}]]; ,,,昨天,cp {$ {} -} $ {ACCESS_LOG},,,,#将原本的日志文件复制一份 ,,,,:比;$ {ACCESS_LOG},,,,,,,,,,,,#将原本的日志内容清空 ,,fi ,,如果[[- f $ {ERROR_LOG}]]; ,,,,ERROR_SIZE=$ (ls - l,$ {ERROR_LOG} | awk & # 39;{打印5美元}& # 39;) ,,,,如果[[{ERROR_SIZE} gt 20971520美元]],然后,,,,,,,#如果error.log日志大于20 m,进行切割 ,,,,,昨天,cp {$ {} -} $ {ERROR_LOG} ,,,,,,:比;$ {ERROR_LOG} ,,,,fi ,,fi 完成 找到$ {LOG_PATH} - type f - name“* .log"-mtime + 7删除,,,,,,#将一周前的日志进行删除代码>
3) Nginx负载均衡服务器上监控Nginx进程的脚本
企业负载均衡层如果用到Nginx + keepalive架构,而keepalive无法进行Nginx服务的实时切换,所以这里用了一个监控脚本check_nginx_pid.sh,每隔5秒就监控一次Nginx的运行状态,如果发现有问题就关闭本机的keepalive程序,让贵宾切换到从Nginx负载均衡器上。
<代码> # !/bin/bash 而: 做 nginxpid=' ps - c nginx——没有标题| wc - l ' 如果[$ nginxpid eq 0];然后 ulimit -SHn 65535/usr/local/nginx/sbin/nginx ,,睡5 其他的/etc/init.d/keepalive停止 fi 睡5 代码完成>
4) Mysql主从监控邮件报警脚本
1)此脚本应该能适应各种各样不同的内外网环境。
2)让脚本也顺便监控下Mysql是否正常运行。
3)奴隶机器的IO和SQL状态都必须为是的,缺一不,可这里用到了多重条件判断——。
<代码> # !/bin/bash MYSQLPORT=& # 39; netstat na | grep“LISTEN" | grep“3306“| awk - f [:“;“]+ & # 39;{打印4美元}& # 39;& # 39; MYSQLIP=& # 39; ifconfig eth0 | grep“inet addr"| awk - f [:“;“]+ & # 39;{打印4美元}& # 39;& # 39; 状态=$ (/usr/地方/mysql/bin/mysql - u dbus -dbpwd123 - s/tmp/mysql。袜子- e“显示奴隶状态\ G"| grep - i“running") IO_env=& # 39; echo $状态| grep IO | awk & # 39;{print $ 2} & # 39; & # 39; SQL_env=& # 39; echo $状态| grep SQL | awk & # 39; {print $ 2} & # 39; & # 39; 如果(“MYSQLPORT"美元;==?306”;] 然后 回声“mysql running" 其他的 邮件- s“警告!服务器:美元MYSQLIP mysql down"magedu@gmail.com fi 如果(“IO_env"美元;=?Yes"——“SQL_env"美元;=?Yes"] 然后 回声“奴隶跑!“ 其他的 回声“# # # # # # # $日期# # # # # # # # #“祝辞祝辞//日志/check_mysql_slave.log数据 回声“奴隶不是跑!“在比;//日志/check_mysql_slave.log数据 邮件- s“警告!MySQLIP_replicate_error"美元;magedu@gmail.com & lt; & lt;//日志/check_mysql_slave.log数据 fishell脚本在实际工作中的应用