前两天接到了一个新的需求,需要在linux shell脚本中监控到mongodb最大连接数、内存使用情况等。

但是我对于linux shel很不了解,只是会一些简单常用的linux的操作而已,只要一顿狂搜,最终多番尝试下终于获取到这些值。

成功的步骤大致如下:

0、
  1. ./mongostat -u admin -p admin --authenticationDatabase admin -n 1 --json >> aaa.txt
把mongodb监控到的一行数据以json格式写入到aaa.txt文件中

1、 
  1. a=`cat aaa.txt`
读取aaa.txt中的内容并赋值给a

获取mapped映射到内存的数据大小:

2、
  1. indma=`echo $a | awk '{printf("%d\n",match($0,"mapped"))}'`
 获取字符串变量a中的子字符串“mapped”的下标,并赋值给indma

3、
  1. indma1=$(($indma+8))
给变量ind加8,把结果赋值给indma1

4、
  1. indma0=`echo $a | awk '{printf("%d\n",match($0,"netIn"))}'`
获取字符串变量a中的子字符串“netIn”的下标,并赋值给indma0

5、
  1. indma2=$(($indma0-4))
给变量indma0减4,把结果赋值给indma2

6、
  1. mastr=`echo ${a:$indma1:$(($indma2-$indma1))}`
获取字符串a中下标indma1到indma2之间的子字符串并赋值给mastr,即mapped的值

获取物理内存使用量:

7、
  1. indre=`echo $a | awk '{printf("%d\n",match($0,"res"))}'`
获取字符串变量a中的子字符串“res”的下标,并赋值给indre

8、
  1. indre1=$(($indre+5))
给变量indre加5,把结果赋值给indre1

9、
  1. indre0=`echo $a | awk '{printf("%d\n",match($0,"time"))}'`
获取字符串变量a中的子字符串“time”的下标,并赋值给indre0

10、
  1. indre2=$(($indre0-4))
给变量indre0减4,把结果赋值给indre2

11、
  1. restr=`echo ${a:$indre1:$(($indre2-$indre1))}`
获取字符串a中下标indre1到indre2之间的子字符串并赋值给restr,即res的值

获取虚拟内存使用量:

12、
  1. indvs=`echo $a | awk '{printf("%d\n",match($0,"vsize"))}'`
 获取字符串变量a中的子字符串“vsize”的下标,并赋值给indvs

13、
  1. indvs1=$(($indvs+7))
给变量indvs加5,把结果赋值给indvs1

14、
  1. indvs0=${#a}
获取字符串变量a的总长度

15、
  1. indvs2=$(($indvs0-3))
给变量indvs0减3,把结果赋值给indvs2

16、
  1. vsstr=`echo ${a:$indvs1:$(($indvs2-$indvs1))}`
获取字符串a中下标indvs1到indvs2之间的子字符串并赋值给vsstr,即vsize的值

获取当前连接数:

17、 
  1. indco=`echo $a | awk '{printf("%d\n",match($0,"conn"))}'`
获取字符串变量a中的子字符串“conn”的下标,并赋值给indco

18、
  1. indco1=$(($indco+6))
给变量indco加6,把结果赋值给indco1

19、 
  1. indco0=`echo $a | awk '{printf("%d\n",match($0,"delete"))}'`
 获取字符串变量a中的子字符串“delete”的下标,并赋值给indco0

20、
  1. indco2=$(($indco0-4))
给变量indco0减4,把结果赋值给indco2

21、
  1. costr=`echo ${a:$indco1:$(($indco2-$indco1))}`
获取字符串a中下标indco1到indco2之间的子字符串并赋值给costr,即conn的值

最大连接数819,空闲连接数可以根据最大连接数和当前连接数算出来。

linux shell中获取mongodb最大连接数、内存使用情况等的更多相关文章

  1. linux在shell中获取时间

    linux在shell中获取时间 获得当天的日期 date +%Y-%m-%d 输出: 2011-07-28 将当前日期赋值给DATE变量DATE=$(date +%Y%m%d) 有时候我们需要使用今 ...

  2. 【转】Linux内核中分配4M以上大内存的方法

    在Linux内核中, kmalloc能够分配的最大连续内存为2的(MAX_ORDER-1)次方个page(参见alloc_pages函数,     "if (unlikely(order & ...

  3. linux shell 中的sleep命令

    开始还以为是这样的语法: sleep(1), 后面发现是: linux shell 中的sleep命令 分类: LINUX 在有的shell(比如linux中的bash)中sleep还支持睡眠(分,小 ...

  4. 理解 Linux shell 中的一个方言:2>&1

    理解 Linux shell 中的一个方言:2>&1  2016-11-14 杜亦舒 前言 在使用 linux 命令或者 shell 编程时,这个用法常会遇到 2>&1 如 ...

  5. linux shell 中的位置变量

    对于linux shell 中的位置变量,我一直以来都是吐不出来又咽不下去,每次看到都不懂,不懂了就去百度google,看完了又忘,真是慢性咽炎啊.现在认真想想也是,其实自己一直以来都没有好好学习过, ...

  6. linux内核中分配4M以上大内存的方法

    在内核中, kmalloc能够分配的最大连续内存为2的(MAX_ORDER-1)次方个page(参见alloc_pages函数,     "if (unlikely(order >= ...

  7. Linux shell中的一个问题 ${}带正则匹配的表达式

    目前在准备龙芯项目的PMON,在研究其编译过程的时候,看到一些make 语句,百思不得其解.后来在shell编程中看到一点资料,牵扯到Shell中的正则表达式.故记录下来,以备后来查阅. 问题: 在某 ...

  8. Linux shell中的竖线(|)——…

    原文地址:Linux shell中的竖线(|)--管道符号作者:潇潇 管道符号,是unix一个很强大的功能,符号为一条竖线:"|". 用法: command 1 | command ...

  9. [转载]Linux shell中的竖线(|)——管道符号

    原文地址:Linux shell中的竖线(|)--管道符号作者:潇潇 管道符号,是unix一个很强大的功能,符号为一条竖线:"|". 用法: command 1 | command ...

随机推荐

  1. jQuery动画详解

    本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. jQuery 动画 jQuery提供的一组网页中常见的动画效果,这些动画 ...

  2. AppScan 扫描测试策略

    使用 AppScan 进行扫描 针对大型网站的扫描,我们按照戴明环 PDCA 的方法论来进行规划和讨论,建议 AppScan 使用步骤:计划(Plan).执行(Do).检查(check).分析(Ana ...

  3. sigmoid_cross_entropy_with_logits

    sigmoid_cross_entropy_with_logits 原创文章,请勿转载!!! 函数定义 def sigmoid_cross_entropy_with_logits(_sentinel= ...

  4. JVM类加载机制---类加载器

    一.概念 "通过一个类的全限定名来获取描述此类的二进制字节流",实现这个动作的代码模块成为 类加载器. 二.分类 从java开发人员的角度出发,系统提供的类加载器大致分为如下3类: ...

  5. Jmeter_打印当前时间戳&打印偏移时间戳

    Jmeter中提供了一种函数,可以打印时间戳,如下图 年: yyyy 月:MM 日:dd 时: HH 分: mm 秒:ss 关于时间戳的格式,可以自由组合定义,这里我写成这样 yyyy-MM-dd H ...

  6. js事件机制

    js事件属性:

  7. shell编程之SHELL基础(1)

    shell脚本基础 shell是一个命令行解释器,她为互用提供了一个想linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动.挂起.停止甚至编写一些程序. shell还是一个功 ...

  8. JSP基础点滴

    注释:<%-- 注释 --%> JSP中一共有3种Scriptlet代码.支持与HTML的代码混编. 第一种:<%%>  定义局部变量,编写语句. 第二种:<%!%> ...

  9. Git hook实现自动部署

    Git Hook 是 Git 提供的一个钩子,能被特定的事件触发后调用.其实,更通俗的讲,当你设置了 Git Hook 后,只要你的远程仓库收到一次 push 之后,Git Hook 就能帮你执行一次 ...

  10. Vue.js响应式原理

      写在前面 因为对Vue.js很感兴趣,而且平时工作的技术栈也是Vue.js,这几个月花了些时间研究学习了一下Vue.js源码,并做了总结与输出. 文章的原地址:answershuto/learnV ...