背景
应届生一枚,公司开发告知需求想要监控tomcat的线程数,思考一番决定采用zabbix定义KEY值得方式去检测,SO第一步要完成一个shell脚本
脚本思路
作为一个全新的运维背锅侠,觉得脚本应该这么写:
首先,我得先检测出tomcat的进程,对没错得用ps命令,加个日常参数套餐ef,然后用grep过滤一下;嗯,还得过滤掉grep这个进程,对再加一条过滤语句
ps -ef | grep "tomcat"| grep -v grep
其次,我得获取到tomcat的进程pid,这里当然用awk了,先看一下我们上一句语句运行的结果
我们要的是23548这个值,对没错,分隔是符空格,无需f指派分隔符,print取第二个值,gogogo
ps -ef | grep "tomcat"| grep -v grep| awk '{print $2}'
然后,我们要用取得的PID去查看tomcat的线程,对,还是用ps,这次换个套餐加Lf(L大写),然后啪啪啪啪一堆的进程出现了,哦no,这不是我想要的,我要的是数量,OK?对,没错,要加个管道符,然后用wc来统计一下我们的进程有多少
ps -Lf 23548 |wc -l
完美,我拿到了服务器tomcat的线程数了;等等,我要的是脚本运行,第二条命令要能拿到第一条命令给出的PID才可以
再然后,先创建一个tomcat.sh脚本文件,我得在脚本里定义一个变量——PID,第一条命令获得变量值后让第二条命令去读取这个变量,思路有了,思考一个问题:如何将一条命令定义为一个变量?对,没错,变量的=后面加$()
vi tomcat.sh
#!/bin/bash
#Tomcat线程检测
PID=$(ps -ef | grep "tomcat" | grep -v grep | awk '{print $2}')
ps -Lf $PID |wc -l
跑起来,最后就是那激动人心的授权执行了
#授予执行权限
chmod +x tomcat.sh
#跑起来
./tomcat
完美的拿到了tomcat线程数
脚本
勉励:哪怕简单代码也要写注释,也要好看点,方便他人看懂,方便自己欣赏
#!/bin/bash
#Tomcat线程检测器
#定义变量PID为tomcat的PID进程号
PID=$(ps -ef | grep "tomcat" | grep -v grep | awk '{print $2}')
#查看并统计tomcat线程数
ps -Lf $PID |wc -l
注
zabbix的监控因为懒,还没写,后续再说
有错请指出,不喜勿喷,不接受喷我小白,虽然这是事实,如果要喷请预约