shell编程(十)if条件判断

一  if条件判断

重点掌握: 实际'生产环境'中使用'最频繁'

①  分支结构

if <条件表达式>;then
   指令
fi

备注:'推荐'使用这种-->'命令行'也是这种

++++++'等价形式'++++++

if <条件表达式>
then
  指令
fi

条件表达式部分: test、'[](常用)'、'[[]](使用正则)'、'(())(单纯数字比较)'、'cmd(命令-->常用)'

备注: '多条件'在'不同符号'之间的'区别'

②  双分支结构

if <条件表达式>;then
     指令一
else
     指令二
fi

③  多分支结构

注意:是elif而不是elseif,记住四个字母即可,并且后面也要跟then

④  等价变换

#!/bin/bash
# [ -f /etc/hosts ] && echo 1
if [ -f /etc/hosts ];then
        echo 1
fi

# 核心:思路的转换!

⑤  监控内存

#!/bin/bash
# 需求:开发shell脚本判断系统剩余内存的大小,如果低于100M就邮件报警给管理员,并加入系统定时任务每三分钟执行一次检查
#(1)获取可用内存的大小--->核心
avaible_free=`free -m|awk 'NR==2{print $NF}'`
#(2)阈值判断
if [ $avaible_free -lt 100 ]
then
        echo "当前内存太小,不够使用,正在发送" && mail -s "title" wzj@qq.com #后续自己搭建邮件服务器!
fi 
#(3)把上述脚本加入crond定时任务,每分钟检查一次,达到阈值报警
# */3 * * * *   /mnt/file.sh > /dev/null

# 重点是思路!

  监控磁盘剩余空间、NFS系统、mysql、web等

# 监控磁盘空间

df -h | awk 'NR==2{print $4}'

######################

#监控服务是不是进行-->不需要awk取出来!

netstat -antlupe |grep 3306|wc -l

#端口是不是存在或者socket是不是存在

#mysqld是不是开启-->两个

netstat -antlupe |grep mysqld |wc -l 

# web是80

⑦  端口监控

'本地'监控:'netstat'、'ss'、lsof

'远程'监控:telnet(一般不用)、nmap、'nc'

ss其它

telnet监控端口

    [root@lamp ~]# echo -e "\n"|telnet www.baidu.com 80|grep Connected|wc -l
    Connection closed by foreign host.
    1 

nmap监控端口

    [root@lamp ~]# nmap www.baidu.com -p 80|grep open|wc -l
    1 

nc监控端口

    [root@lamp ~]# nc -z 192.168.163.128 22|grep succeeded|wc -l
    1 

⑧  进程监控

1、'本地监控':ps -ef|grep mysql|wc -l

2、wget/curl,http方式根据'返回值'或者返回内容判断-->'服务状态判断'

3、header(http),http方式根据'状态码'判断

4、数据库特有通过'mysql客户端连接',根据返回值或者返回内容判断

查看远端的端口是否通畅3个简单实用案例

    [root@lamp ~]# cat check_db.sh
    #!/bin/bash
    #本地的方式-->mysql不启动,是0(数字),用 -eq会有语法报错!--->尽量取行判断,不要取数值
    # 多分割符号
    if [ "`netstat -lnt|grep 3306|awk -F "[ :]+" '{print $5}'`" = "3306" ]
    #过滤进程(注意:脚本名称不能是mysql,自己也算一个进程,容器出错)
    #if [ `ps -ef|grep mysql|grep -v grep|wc -l` -gt 0 ]
    #if [ `netstat -lntup|grep mysqld|wc -l` -gt 0 ]
    #if [ `lsof -i tcp:3306|wc -l` -gt 0 ]
     
    #远程的方式-->换成自己的ip的形式!
    #if [ `nmap 172.25.2.1 -p 3306 2>/dev/null|grep open|wc -l` -gt 0 ]
    #if [ `nc -w 2 172.25.2.1 3306 &>/dev/null&&echo ok|grep ok|wc -l` -gt 0 ]
      then
        echo "Mysql is Running."
    else
        echo "Mysql is Stopped."
        # 脚本开启-->多示例
        /deta/mysql start
    fi 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值