博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分享一个shell脚本的坑:grep匹配+wc取值 在脚本执行后的结果与手动执行结果不一致...
阅读量:6280 次
发布时间:2019-06-22

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

 

打算在跳板机上写一个shell脚本,批量检查远程服务器上的main进程是否在健康运行中。

先找出其中一台远程机器,查看main进程运行情况

[root@two002 tmp]# ps -ef|grep mainroot     23448 23422  0 11:40 pts/0    00:00:00 grep --color=auto main[root@two002 tmp]# ps -ef|grep main|grep -v grep|wc -l0

shell检查脚本如下

[root@two002 tmp]# cat /tmp/main_check.sh #!/bin/bashNUM=$(ps -ef|grep main|grep -v grep|wc -l)if [ $NUM -eq 0 ];then   echo "It's not good! main is stoped!"else   echo "Don't worry! main is running!"fi

执行脚本

[root@two002 tmp]# sh -x /tmp/main_check.sh++ grep main++ grep -v grep++ wc -l++ ps -ef+ NUM=2+ '[' 2 -eq 0 ']'+ echo 'Don'\''t worry! main is running!'Don't worry! main is running![root@two002 tmp]# sh /tmp/main_check.shDon't worry! main is running!

如上执行结果,发现脚本执行过程中,看到赋予NUM参数的结果值是2但是手动执行ps -ef|grep main|grep -v grep|wc -l的结果明明是0!!

这是由于grep匹配的问题,需要grep进行精准匹配,即"grep -w"。这就需要将main_check.sh脚本内容修改如下

[root@two002 tmp]# cat /tmp/main_check.sh #!/bin/bashNUM=$(ps -ef|grep -w main|grep -v grep|wc -l)if [ $NUM -eq 0 ];then   echo "Oh!My God! It's broken! main is stoped!"else   echo "Don't worry! main is running!"fi

再次执行检查脚本,就OK了

[root@two002 tmp]# sh -x /tmp/main_check.sh++ grep -w main++ grep -v grep++ wc -l++ ps -ef+ NUM=0+ '[' 0 -eq 0 ']'+ echo 'Oh!My God! It'\''s broken! main is stoped!'Oh!My God! It's broken! main is stoped![root@two002 tmp]# sh /tmp/main_check.shOh!My God! It's broken! main is stoped!

故在跳板机上,批量检查远程服务器的main进程运行状态的脚本为:

[root@tiaoban ~]# cat /usr/bin/main_check #!/bin/bashNUM=$(ps -ef|grep -w main|grep -v grep|wc -l)if [ $NUM -eq 0 ];then   echo "Oh!My God! It's broken! main is stoped!"else   echo "Don't worry! main is running!"fi[root@tiaoban ~]# cat /opt/script/main_check.sh #!/bin/bashfor i in $(cat /opt/ip.list)do/usr/bin/rsync -e "ssh -p22" -avpgolr /usr/bin/main_check $i:/usr/bin/ > /dev/null 2>&1ssh -p22 root@$i "echo $i;sh /usr/bin/main_check"done  

转载地址:http://shnva.baihongyu.com/

你可能感兴趣的文章
httpd – 对Apache的DFOREGROUND感到困惑
查看>>
分布式锁的一点理解
查看>>
idea的maven项目,install下载重复下载本地库中已有的jar包,而且下载后jar包都是lastupdated问题...
查看>>
2019测试指南-web应用程序安全测试(二)指纹Web服务器
查看>>
树莓派3链接wifi
查看>>
js面向对象编程
查看>>
Ruby中类 模块 单例方法 总结
查看>>
jQuery的validate插件
查看>>
5-4 8 管道符 作业控制 shell变量 环境变量配置
查看>>
Enumberable
查看>>
开发者论坛一周精粹(第五十四期) 求购备案服务号1枚!
查看>>
validate表单验证及自定义方法
查看>>
javascript 中出现missing ) after argument list的错误
查看>>
使用Swagger2构建强大的RESTful API文档(2)(二十三)
查看>>
Docker容器启动报WARNING: IPv4 forwarding is disabled. Networking will not work
查看>>
(转)第三方支付参与者
查看>>
程序员修炼之道读后感2
查看>>
DWR实现服务器向客户端推送消息
查看>>
js中forEach的用法
查看>>
Docker之功能汇总
查看>>