博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell习题_6
阅读量:7305 次
发布时间:2019-06-30

本文共 2415 字,大约阅读时间需要 8 分钟。

hot3.png

1、计算文档a.txt中的每一行中出现的数字个数并且要计算整个文档中一共出现了几个数字; wc  -L  统计最长行的词数;

当然是会要用到了for 循环了,然后每一行来循环判断出数字,然后相加即可;

注释:但是假如在同一行有空格的话,也会当成两端去循环;如下;

for  i   in   `echo -e  "12345\nabc  def"`; do echo $i;done        #本来这是两行显示的,如今却显示出了三行;则不可取;

123456

abc
def

当然也可以用sed;首先需要打印出总行数,然后来用for循环,用sed来一行 一行的取;  比如3 行内容;

for   i   in  `seq  1 3`;do  sed -n  "$i"p  2.txt ;done   

sdfsdasdf23
12fsdklsl;jdffkl34
2342o
当然用变量传递参数的方式也可以;

while   read   line;  do   echo $line; done < 2.txt                  执行时:   sh   21.sh  2.txt

脚本内容如下;  

vim  21.sh#!/bin/bashsum=0while read linedo     n=`echo line|sed 's#[^0-9]##g'|wc -L`    echo $n    sum=$[$sum+$n]    done < $1   echo "$sum"

注释:需要定义一个sum 值,然后把每段的相加,最后打印出来;

[root@localhost_002 shell100]# sh 21.sh 2.txt           执行;

2
4
4
10
2、假如当前mysql密码为 nihao123! 写脚本检测mysql服务是否正常(比如 可以进入mysql 里 执行 show  processlist),并检测当前mysql是主还是从,如果是从,则判断 它 的主是否正常,如果是主,则什么也不做;

[root@localhost_002 shell100]# cat 22.sh #!/bin/bashmysql="/usr/local/mysql/bin/mysql -uroot -pnihao123!"if ! $mysql -e "show processlist"  > /dev/null 2>&1then    echo "msyql service is down;"    exitelse     $mysql -e "show slave status\G" >/tmp/slave.state 2>/dev/null    n=`wc -l /tmp/slave.state|awk '{print $1}'`    if [ $n -eq 0 ]    then       echo "This is master."    else       echo "This is slave"       egrep 'Slave_IO_Running:|Slave_SQL_Running:'|awk -F ': ' '{print $2}' >/tmp.sql       if grep -q "No" /tmp/tmp.sql       then          echo "The is salve is down"       fi    fifi

注意 分三步:首先通过是否可以执行 show  processlist  判断mysql服务是否可用;然后在判断mysql主从,通过打印 show  slave  status\G 内容写入到一个文件,然后判断这个文件的行数是否等于,如果是主,则没有任何内容,否则就是从; 然后在通过show  slave  status\G,通过egrep 过滤出来 Slave_IO_Running:Slave_SQL_Runnning: 打印出第二行,判断是否等于 No ,如果是,则主从已经挂了,可以设置发邮件或告警等操作;

3、判断服务器是否开启 web 服务(80),然后判断是什么服务;是 httpd  nginx 或者是其他的什么;

[root@localhost_002 shell100]# cat 23.sh #!/bin/bashn=`netstat -lntp|grep ':80 '|wc -l`if [ $n -eq 0 ]then    echo "it not listen port 80"else   server=`netstat -lnpt|grep ':80 '|awk -F '/' '{print $2}'|sed 's# ##g'`   echo "is is listen port 80 and the service is $server."fi 

本题的难点在与如何过滤出来 80 端口 以及  是什么服务;

过滤80端口:  netstat  -lnpt |grep ':80 '|wc -l

判断是什么服务: netstat  -lnpt |grep ':80 '|awk -F '/' '{print $NF}'|sed 's# ##g'

4:某一台机器负载偏高,top查看有很多sh的进程,分析后发现该脚本执行时间过长,写一个shell脚本,批量杀死所有 .sh 的脚本;

[root@localhost_002 shell100]# cat 24.sh #!/bin/bash#!/bin/bashfor pid in `ps aux |grep clearnen.sh |awk '{print $2}'` do     echo $pid    kill -9 $piddone

 

转载于:https://my.oschina.net/yuanhaohao/blog/2992208

你可能感兴趣的文章
idea中dependencies中总是有红色波浪线(缺少dependency)的解决办法
查看>>
Python 入门:基本语法
查看>>
腾讯毛华:智能交互,AI助力下的新生态
查看>>
看完这个不会配置 logback ,请你吃瓜!
查看>>
电商网站的安全性
查看>>
Java 安全模型介绍
查看>>
使用yarn代替npm
查看>>
OpenGL ES 2 0 (iOS)[06 1]:基础纹理
查看>>
数据结构:集合
查看>>
swift基础学习(五)
查看>>
微博上的点击查看大图是什么逻辑
查看>>
近期学习总结
查看>>
Java并发编程(一)Thread详解
查看>>
Java集合框架源码解析之LinkedHashSet
查看>>
OneClock的翻页时钟效果是如何实现的
查看>>
11-构造函数
查看>>
Gvoice iOS接入
查看>>
讲清楚之 javascript 函数
查看>>
iOS渐变字体、动态条纹、获取特定位置cell、笔记App、购物车界面等源码
查看>>
【前端Talkking】CSS系列——CSS深入理解之absolute定位
查看>>