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

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

成功的步骤大致如下:

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

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

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

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

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

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

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

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

获取物理内存使用量:

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

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

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

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

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

获取虚拟内存使用量:

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

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

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

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

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

获取当前连接数:

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

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

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

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

21、
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. gulp最简示例

    全局安装 $ npm gulp -g 作为项目的开发依赖安装 $ npm gulp --save-dev 脚本文件 在根目录创建gulpfile.js文件 const gulp = require(' ...

  2. 接口中定义变量必须为public static final的原因

    在interface里面的变量默认都是public static final 的,原因如下: 1.   接口是一种高度抽象的"模版",,而接口中的属性也就是’模版’的成员,就应当是 ...

  3. ABP官方文档翻译 5.4 SwaggerUI集成

    SwaggerUI集成 介绍 ASP.NET Core 安装Nuget包 配置 测试 ASP.NET 5.x 安装Nuget包 配置 测试 介绍 在它的网站上:“...使用Swagger可用的API, ...

  4. HDU [P1281]棋盘游戏

    二分图求最大匹配 我们以每一个格子为边,以行和列为两个集合,那么求二分图的最大匹配数就是最多能放车的数目,那么什么是重要点呢?就是删掉后会影响最大匹配数的匹配边. 我们求出最大匹配数后,枚举匹配边,将 ...

  5. BZOJ 3550: [ONTAK2010]Vacation [单纯形法]

    有3N个数,你需要选出一些数,首先保证任意长度为N的区间中选出的数的个数<=K个,其次要保证选出的数的个数最大. 好像都是费用流... 单纯性裸题呀... 注意每个数最多选1次 #include ...

  6. HDU1013,1163 ,2035九余数定理 快速幂取模

    1.HDU1013求一个positive integer的digital root,即不停的求数位和,直到数位和为一位数即为数根. 一开始,以为integer嘛,指整型就行吧= =(too young ...

  7. jQuery源码研究——解决命名冲突

    在项目中难免不去使用多个插件,如此一来这些插件就有可能出现一样的名称,当出现同名变量时后一个将会覆盖上一个,这样的话我们就无法同时使用多个插件了. 当遇到这种情况我们可以手动去修改插件源码把它的名字改 ...

  8. nodejs express搭建一个网站整理

    先前用安卓完成了一个优惠券搜索的app,发现在app上操作比较麻烦,于是决定弄个网页版的.做网站是自己的擅长的,毕竟毕业之后咱一直用asp.net mvc做网站也好几个年头了. 可是这次我又想换个方式 ...

  9. NFS配置及使用

    什么是NFS NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享存储.在NFS的应用中,本地NFS ...

  10. neo-thinsdk-cs 之 thinWallet 接入私链

    neo-thinsdk-cs 之 thinWallet 接入私链 2017年底刚开始接触区块链,目前在被 NEO 折磨. 一开始被官方文档和 NEO-GUI 搞得体无完肤(尤其是传说中的 F12),也 ...