笔试题 shell

来源:互联网 发布:淘宝如何避免盗图投诉 编辑:程序博客网 时间:2024/06/07 07:22
企业实践题1:(生产实战案例):监控MySQL主从同步是否异常,如果异常,则发送短信或者邮件给管理员。提示:如果没主从同步环境,可以用下面文本放到文件里读取来模拟:
阶段1:开发一个守护进程脚本每30秒实现检测一次。
阶段2:如果同步出现如下错误号(1158,1159,1008,1007,1062),则跳过错误。

阶段3:请使用数组技术实现上述脚本(获取主从判断及错误号部分)

mysql查看状态语句  

mysql>show slave status\G

*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.0.0.42
                  Master_User: backup
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 538
               Relay_Log_File: mysql-relay-bin.000002
                Relay_Log_Pos: 701
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes


使用
MysqlCmd2 命令筛选后语句:

Yes
Yes
0
0
it


#!/bin/bashport=3306 error=(1158 1159 1008 1007 1062) #错误编号的数组MysqlCmd1= mysql -uroot -p192.168.51.9 -eMysqlCmd2= mysql -uroot -p192.168.51.9 -e"show slave status\G"|egrep "_Running|Last_Errno|Behind_Master"|awk '{print $NF}'
#检查mysql是否运行function is_run(){ [ `lsof -i:$port|wc -l` -lt 2 ]&&{ echo"mysql is stop" exit 1 }}
#提取mysql slave状态到数组arrayfunction mysql_status(){ array=(`$MysqlCmd2`) }
#判断错误类型,是否是需要排除的那几个错误编号function judge_error(){for i in ${error[*]}do   if [ "${array[2]}" == "$i" ];then   $MysqlCmd1"stop slave;SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;start slave;"  else   echo "mysql is failed,error id is ${array[2]}"  fidone}
#判断 mysql slave 状态judge_status(){mysql_statusecho ${array[*]}if [ "${array[0]}" == "Yes" -a "${array[1]}" == "Yes" -a "${array[3]}" == "0" ];then    echo "Mysql slave is ok"else    judge_error ${array[2]}fi}
#主函数function main(){while true do   is_run   judge_status   sleep 30 done}main





企业实践题2:
使用for循环在/oldboy目录下通过随机小写10个字母加固定字符串oldboy批量创建10个html文件,名称例如为:

coaolvajcq_oldboy.html  qnvuxvicni_oldboy.html

#!/bin/bash
dir=/oldboy
[ ! -d $dir ] && mkdir -p $dir

cd $dir

 
for((i=1;i<=10;i++ ))
do
a=`tr -dc "a-z"  < /dev/urandom | head -c 10`_oldboy,html
  touch $a
done

#tr -dc 的意思是,将字符串中a到z 以外的字符提取并删除














原创粉丝点击