前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >shell脚本专题(08):让脚本更优雅--循环

shell脚本专题(08):让脚本更优雅--循环

作者头像
loong576
发布2023-09-09 16:21:41
1620
发布2023-09-09 16:21:41
举报
文章被收录于专栏:运维ABC运维ABC

前言:最近生产上业务卡顿,怀疑是程序连数据库有问题,现需要部署监控,获取各服务与数据库的连接数,输出格式为key:vaule。

一、传统模式
代码语言:javascript
复制
#!/bin/bash

XDB1=10.11.11.116
XDB2=10.11.11.117

FLOW_PS=`ps -ef|grep flow|grep -v grep|awk {'print $2'}`
OUT_PS=`ps -ef|grep out|grep -v grep|awk {'print $2'}`
SETT_PS=`ps -ef|grep sett|grep -v grep|awk {'print $2'}`
TASK_PS=`ps -ef|grep task|grep -v grep|awk {'print $2'}`
WEB_PS=`ps -ef|grep web|grep -v grep|awk {'print $2'}`
TOM_PS=`ps -ef|grep apache-tomcat|grep -v grep|awk {'print $2'}`

FLOW_CNT116=`netstat -anlp|grep ESTABLISHED|grep $XDB1|grep $FLOW_PS|wc -l`
FLOW_CNT117=`netstat -anlp|grep ESTABLISHED|grep $XDB2|grep $FLOW_PS|wc -l`

OUT_CNT116=`netstat -anlp|grep ESTABLISHED|grep $XDB1|grep $OUT_PS|wc -l`
OUT_CNT117=`netstat -anlp|grep ESTABLISHED|grep $XDB2|grep $OUT_PS|wc -l`

SETT_CNT116=`netstat -anlp|grep ESTABLISHED|grep $XDB1|grep $SETT_PS|wc -l`
SETT_CNT117=`netstat -anlp|grep ESTABLISHED|grep $XDB2|grep $SETT_PS|wc -l`

TASK_CNT116=`netstat -anlp|grep ESTABLISHED|grep $XDB1|grep $TASK_PS|wc -l`
TASK_CNT117=`netstat -anlp|grep ESTABLISHED|grep $XDB2|grep $TASK_PS|wc -l`

WEB_CNT116=`netstat -anlp|grep ESTABLISHED|grep $XDB1|grep $WEB_PS|wc -l`
WEB_CNT117=`netstat -anlp|grep ESTABLISHED|grep $XDB2|grep $WEB_PS|wc -l`

TOM_CNT116=`netstat -anlp|grep ESTABLISHED|grep $XDB1|grep $TOM_PS|wc -l`
TOM_CNT117=`netstat -anlp|grep ESTABLISHED|grep $XDB2|grep $TOM_PS|wc -l`

echo "flow116:$FLOW_CNT116"
echo "flow117:$FLOW_CNT117"

echo "out116:$OUT_CNT116"
echo "out117:$OUT_CNT117"

echo "sett116:$SETT_CNT116"
echo "sett117:$SETT_CNT117"

echo "task116:$TASK_CNT116"
echo "task117:$TASK_CNT117"

echo "web116:$WEB_CNT116"
echo "web117:$WEB_CNT117"

echo "apache-tomcat116:$TOM_CNT116"
echo "apache-tomcat117:$TOM_CNT117"

一共6个服务,2个数据库,输出为“服务名”+“数据库标签”+“连接数”

运行结果:

shell脚本专题(08):让脚本更优雅--循环_shell
shell脚本专题(08):让脚本更优雅--循环_shell
二、循环
代码语言:javascript
复制
#!/bin/bash

xdb="10.11.11.116 10.11.11.117"

for ps in flow  out sett task web apache-tomcat
do 
  num=`ps -ef|grep $ps|grep -v grep|awk {'print $2'}`
  for db in $xdb
  do
    cnt=`netstat -anlp|grep ESTABLISHED|grep $db|grep $num|wc -l`
    tip=`echo $db|cut -d . -f 4` 
    echo "${ps}${tip}:${cnt}"
  done
done

进程名为第一个循环,数据库名为第二个循环,tip用来区分不同数据库

运行结果:

shell脚本专题(08):让脚本更优雅--循环_linux_02
shell脚本专题(08):让脚本更优雅--循环_linux_02
三、总结

两种不通的方式可以得到相同的结果。传统方式直接明了、通俗易懂,但是略显臃肿;对比之下循环方式简洁优雅。

更多请点击: shell专题

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-09-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、传统模式
  • 二、循环
  • 三、总结
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档