zoukankan      html  css  js  c++  java
  • shell脚本面试

    1.kill掉mysql的脚本 

    #!/bin/bash
    while true
    do
    killall mysqld > /dev/null 2>&1
    [ $? -ne 0 ] && echo "mysql_server is killall !" && break
    sleep 1
    done

    2.监控MySQL主从同步是否异常,如果异常,则发送短信或者邮件给管理员。

    #!/bin/bash
    MYUSER=root
    MYPASS="123456"
    MAIL="1339329314@qq.com"
    MYSOCK=/data/mysqld/mysql.sock
    MYSQL_STARTUP="/etc/init.d/mysqld"
    LOG_PATH=/var/log
    LOG_FILE=${LOG_PATH}/mysqllogs_`date +%F`.log
    MYSQL_PATH=/usr/local/mysql/bin
    MYSQL_CMD="$MYSQL_PATH/mysql -u$MYUSER -p$MYPASS -S$MYSOCK"
    ###############################################################################
    $MYSQL_CMD -e "select version ();" > /dev/null 2>&1
    if [ $? -eq 0 ];then
    echo "MYSQL is runing!"
    exit 0
    else
    [ -x $MYSQL_STARTUP ] && $MYSQL_STARTUP start > $LOG_FILE
    sleep 10

    $MYSQL_CMD -e "select version ();" > /dev/null 2>&1

    if [ $? -ne 0 ];then
    for ((i=1;i<1001;i++))
    do
    killall -9 mysqld > /dev/null 2>&1
    [ $? -ne 0 ] && break
    sleep 1
    done
    [ -x $MYSQL_STARTUP ] && $MYSQL_STARTUP start >> $LOG_FLIE
    fi

    $MYSQL_CMD -e "select version ();" > /dev/null 2>&1 && status="restarted" || status="unknown"
    echo "`date`-MYSQL status is $status" > $LOG_FILE
    #mail -s "MYSQL status is $status" 1339329314@qq.com < $LOG_FILE
    echo "`date`-MYSQL status is $status"|mail -s "mysqld" 1339329314@qq.com
    fi

    3.使用函数编写nginx启动脚本

    #!/bin/bash
    # chkconfig: - 99 20
    # description:nginx
    . /etc/init.d/functions

    PROG="/usr/local/nginx/sbin/nginx"
    PIDF="/usr/local/nginx/logs/nginx.pid"

    start(){
    $PROG >& /dev/null
    [ $? -eq 0 ] && action "nginx is started" /bin/true||
    action "nginx is started" /bin/false
    }
    stop(){
    kill -s QUIT $(cat $PIDF) >& /dev/null
    [ $? -eq 0 ] && action "nginx is stop" /bin/true||
    action "nginx is stop" /bin/false
    }
    restart(){
    $0 stop >& /dev/null
    $0 start >& /dev/null
    [ $? -eq 0 ] && action "nginx is restart" /bin/true||
    action "nginx is restart" /bin/false
    }
    reload(){
    kill -s HUP $(cat $PIDF)
    [ $? -eq 0 ] && action "nginx is reload" /bin/true||
    action "nginx is reload" /bin/false
    }
    other(){
    echo "useage:$0 {start|stop|restart|reload}"
    exit 1
    }

    case $1 in
    start)
    start
    ;;
    stop)
    stop
    ;;
    restart)
    restart
    ;;
    reload)
    reload
    ;;
    *)
    other
    ;;
    esac
    exit 0

    4.普通的nginx启动脚本

    #!/bin/bash
    # chkconfig: - 99 20
    # description:nginx
    . /etc/init.d/functions

    PROG="/usr/local/nginx/sbin/nginx"
    PIDF="/usr/local/nginx/logs/nginx.pid"

    case $1 in
    start)
    $PROG >& /dev/null
    [ $? -eq 0 ] && action "nginx is started" /bin/true||
    action "nginx is started" /bin/false
    ;;
    stop)
    kill -s QUIT $(cat $PIDF) >& /dev/null
    [ $? -eq 0 ] && action "nginx is stop" /bin/true||
    action "nginx is stop" /bin/false
    ;;
    restart)
    $0 stop >& /dev/null
    $0 start >& /dev/null
    [ $? -eq 0 ] && action "nginx is restart" /bin/true||
    action "nginx is restart" /bin/false
    ;;
    reload)
    kill -s HUP $(cat $PIDF)
    [ $? -eq 0 ] && action "nginx is reload" /bin/true||
    action "nginx is reload" /bin/false
    ;;
    *)
    echo "useage:$0 {start|stop|restart|reload}"
    exit 1
    esac
    exit 0

    或者

    #!/bin/bash
    # chkconfig: - 99 20
    # description:nginx

    PROG="/usr/local/nginx/sbin/nginx"
    PIDF="/usr/local/nginx/logs/nginx.pid"

    case $1 in
    start)
    $PROG
    ;;
    stop)
    kill -s QUIT $(cat $PIDF)
    ;;
    restart)
    $0 stop &>> /dev/null
    $0 start &>> /dev/null
    ;;
    reload)
    kill -s HUP $(cat $PIDF)
    ;;
    *)
    echo "useage:$0 {start|stop|restart|reload}"
    exit 1
    esac
    exit 0

    5.tomcat启动脚本

    稍后补充

    6.ping一个网段有哪些存活的IP脚本

    [root@www 2017_08_31.sh]# cat panduan_wangduan_for_ip.sh
    #!/bin/bash
    IP=192.168.0.
    echo "`date "+%Y%m%d %H:%M:%S"`----->脚本开始执行......"
    #for i in $(seq 1 254)
    for ((i=1;i<=254;i++))
    do
    ping $IP$i -c 2 | grep -q "ttl="
    if [ $? -eq 0 ];then
    echo "$IP$i yes !"
    else
    echo "$IP$i no !"
    fi
    done
    echo "`date "+%Y%m%d %H:%M:%S"`----->脚本执行结束......"
    [root@www 2017_08_31.sh]# cat panduan_wangduan_while_ip.sh
    #!/bin/bash
    IP=192.168.0.
    ip=1
    echo "`date "+%Y%m%d %H:%M:%S"`----->脚本开始执行......"
    while [ $ip -lt 255 ]
    do
    ping $IP$ip -c 2|grep -q "ttl=" #&& echo "192.168.0.$ip yes" || echo "192.168.0.$ip no"
    if [ $? -eq 0 ];then
    echo "$IP$ip yes !"
    else
    echo "$IP$ip no !"
    fi

    #ip=$(($ip + 1))
    ip=$(expr "$ip" "+" "1")
    done
    echo "`date "+%Y%m%d %H:%M:%S"`----->脚本执行结束......"

     7.判断成绩脚本

    #!bin/bash
    while true
    do
    read -t10 -p "请输入学号:" number
    if [ $number == exit ];then
    exit
    fi
    echo "$number"|[ -n "`sed -n '/^[0-9][0-9]*$/p'`" ]
    if [ $? -eq 0 ];then
    echo "this is number !"
    else
    exit
    fi
    read -t10 -p "请输入姓名:" name
    echo "$name"|[ -n "`sed -n '/^[0-9][0-9]*$/p'`" ]
    if [ $? -eq 0 ];then
    exit
    else
    echo "this is character !"
    fi
    read -t10 -p "请输入成绩:" achievement
    echo "$achievement"|[ -n "`sed -n '/^[0-9][0-9]*$/p'`" ]
    if [ $? -eq 0 ];then
    echo "this is number !"
    else
    exit
    fi
    if [ "$achievement" -ge "60" ];then
    echo "学号=$number 姓名=$name 成绩=$achievement" >> pass.txt
    else
    echo "学号=$number 姓名=$name 成绩=$achievement" >> notpass.txt
    fi
    done

    7.使用for循环在/html目录下通过随机小写10个字母加固定字符串html批量创建10个html文件

    #!/bin/bash
    file=/root/html
    shell=/root/add_html_pl.sh
    [ ! -d $file ] && mkdir $file || echo "$file 已经存在!"
    [ ! -x $shell ] && exit 1||echo "$shell可以执行!"
    for i in $(seq 1 10)
    do
    touch $file/$(mkpasswd -l 50 | tr -dc 'a-z'|cut -c1-10)_xyz.html
    done

    8.将以上文件名中的xyz全部改成xxx(用for循环实现),并且html改成大写。

    #!/bin/bash
    file=/root/html
    shell=/root/html_file_xg.sh
    [ ! -d $file ] && mkdir $file || echo "$file 已经存在!"
    [ ! -x $shell ] && exit 1||echo "$shell可以执行!"
    for i in $(ls -l /root/html/|awk '{print $9}'|grep -v "^$")
    do
    a=$(echo $i|cut -c 1-10)
    mv $file/${a}_xyz.html $file/${a}_xxx.HTML
    done

  • 相关阅读:
    Sum Root to Leaf Numbers深度优先计算路径和
    Path Sum II深度优先找路径
    动态和静态链接库
    C/C++变量
    搜索
    基本格式
    随机数生成函数
    珍惜生命,我用Python 。今天开始学习Python
    在windows里hexo 博客创建步骤
    作为一个程序员,什么是脚本。必须要理解
  • 原文地址:https://www.cnblogs.com/xiaoyongzhuo/p/7484015.html
Copyright © 2011-2022 走看看