linux shell中获取mongodb最大连接数、内存使用情况等

前两天接到了一个新的需求,需要在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,空闲连接数可以根据最大连接数和当前连接数算出来。

时间: 2024-08-27 10:10:54

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

linux shell 脚本获取和替换文件中特定内容

1.从一串字符串中获取特定的信息 要求1:获取本机IP:menu.lst为系统镜象的IP配置文件,需要从中获取到本机IP信息(从文件获取信息) 1 timeout 1 2 default 0 3 4 title live 5 find --set-root /casper/vmlinuz 6 kernel /casper/vmlinuz boot=casper ignore_uuid showmounts ip=eth0,10.0.66.66,255.255.240.0,10.0.64.3 7

Linux Kernel中获取当前目录方法(undone)

目录 0. 引言 1. 基于进程内存镜像信息struct mm_struct获取struct path调用d_path()获取当前进程的"绝对路径" 2. 基于文件描述符(fd).task_struct调用d_path()获取当前进程的"当前目录" 3. 基于dentry.vfsmount调用d_path()获取当前进程的"当前目录" 4. 基于get_fs_pwd获取当前目录 0. 引言 本文涉及的是ring0下的获取当前进程工作目录的方法,L

Linux Shell中‘$‘符号的N种用法

在Shell中$是一个特殊的字符,在不同场景中有不同的用法. 引用变量 使用$直接引用变量,包括循环变量. 123 [email protected]:~# x=1[email protected]:~# echo $x1 双引号"括起来的字符串支持变量插值. 123 [email protected]:~# x=1[email protected]:~# echo "x = $x"x = 1 使用${}作为单词边界. 123 [email protected]:/var/l

linux shell中的比较符号与特殊符号介绍

shell字符串比较.判断是否为数字  二元比较操作符,比较变量或者比较数字.注意数字与字符串的区别.  整数比较  -eq 等于,如:if [ "$a" -eq "$b" ]  -ne  不等于,如:if [ "$a" -ne "$b" ]  -gt 大于,如:if [ "$a" -gt "$b" ]  -ge 大于等于,如:if [  "$a" -ge "

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

理解 Linux shell 中的一个方言:2>&1 2016-11-14 杜亦舒 前言 在使用 linux 命令或者 shell 编程时,这个用法常会遇到 2>&1 如果是刚开始接触Linux,这个东西的确不好理解,因为他没有直观的含义,不像一个命令,例如 cp是 copy 的简写,很好记. 我以前刚用Linux时就对这个东西迷糊了一段时间,今天刚好看到一篇文章介绍他,感觉很有必要总结出来,分享给还不是很理解这个方言的朋友. 下面看一个命令示例,然后分析下他是如何工作的: l

linux shell 中的位置变量

对于linux shell 中的位置变量,我一直以来都是吐不出来又咽不下去,每次看到都不懂,不懂了就去百度google,看完了又忘,真是慢性咽炎啊.现在认真想想也是,其实自己一直以来都没有好好学习过,只是看了些速成的东西,匆匆忙忙地扫描,然后以光的速度忘掉了.好了,不淡这些了,希望和大家共勉. 第一次在Makefile中看到位置参数这东西比如[email protected],$^,$<等 ,shell中的位置参数也长这样子,但含义是不一样的.在shell中 $#,表示传递到脚本的参数的个数 $

linux shell中的$0,$?,$!和&lt;&lt;&#39;END&#39;

变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行的命令的结束代码(返回值) $- 使用Set命令设定的Flag一览 $* 所有参数列表.如"$*"用「"」括起来的情况.以"$1 $2 - $n"的形式输出所有参数. [email protected] 所有参数列表.如"[email protected]"用「"」括起来的情况.以"$1

linux shell中&#39;&#39;,&quot;&quot;和``的区别

今天学习一个bash脚本,看到有一条:bin=`dirname "$0"` (dirname filename是输出该文件所在的目录,$0是该bash文件的文件名,在bash中一般使用cd `dirname $0`进入该脚本所在的目录中) 我尝试着cat $bin 输出是:. 然后我将反引号``去掉:bin=dirname "$0" 在运行cat $bin后报错. 网上查了一些bash的单引号'',双引号""和反引号``的区别. 单引号''和双引

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

在内核中, kmalloc能够分配的最大连续内存为2的(MAX_ORDER-1)次方个page(参见alloc_pages函数,     "if (unlikely(order >= MAX_ORDER))        return NULL;"), page的大小一般是4K bytes, MAX_ORDER缺省定义为11, 所以如果不修改内核, kmalloc能够分配的最大连续内存一般是4M bytes. 内核中获取4M以上大内存的方法有三种: 1.修改MAX_ORDER,