## 编写一个巡检脚本,用来检测系统里面所有服务是否都正常运行
## 假定系统运行的服务有nginx,mysql,redis,tomcat
## 要求脚本有内容输出,可以明确告知服务是否正常运行
## 如果服务进程存在并且端口监听说明服务正常。
## 进程是否存在使用 pgrep aux |grep 'xxx'
## 端口是否存在使用 ss -lnp |grep 'xxxx'
#!/bin/bash
## 判断pgrep或ss命令是否存在
check_tools()
{
if ! which pgrep &>/dev/null
then
echo "本机没有pgrep命令"
exit1
fi
if ! which ss &>/dev/null
then
echo "本机没有ss命令"
exit 1
fi
}
## 使用pgrep来检测某服务进程是否存在
## 该函数只有返回值为0或1
## 当返回值为0说明进程存在,返回值为1说明进程不存在
check_ps()
{
if pgrep "$1" &>/dev/null
then
return 0
else
return 1
fi
}
## 使用ss -lnp来检测指定端口是否存在
check_port()
{
port_n=`ss -lnp|grep ":$1 "|wc -l`
if [ $port_n -ne 0 ]
then
return 0
else
return 1
fi
}
## 只有check_ps和check_port同时返回值为0才能说明指定服务是正常的
check_srv()
{
if check_ps $1 && check_port $2
then
echo "$1服务正常"
else
echo "$1服务不正常"
fi
}
check_tools
check_srv mysql 3306
check_srv java 44064
check_srv gbase 5258
<<'COMMENT'
1)如果将一条命令的结果作为if的判断条件,则当命令执行成功时条件为真,也就是说当返回值为0时,条件为真
2)pgrep后面跟进程名关键字即可将相关进程的pid列出来
COMMENT
检查服务进程是否正常
转载上一篇:网卡、IP互相查询
下一篇:监控服务器CPU使用率
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
检查MySQL的Slave是否正常
下午写了一个的检查MySQL REPLICATION的SLAVE是否正常的脚本,比较简单。如果想和CRONTAB一块运行,去掉Read部分即可。
职场 mysql 数据库 休闲 replication