#!/bin/sh
bin=$(cd `dirname $0`;pwd)
cd ${bin}
### 定义检查函数
chk(){
programName=$1
correctNum=$2
programSubName=$3
# 判断是否带子程序名
if [ -n "${programSubName}" ]
then
programNum=$(ps -ef|grep -Ewv "grep|less|more|zgrep|zless|vi|vim|gzip"|grep ${programName}|grep -w ${programSubName}|wc -l)
info=($(ps -eo pid,lstart,etime,cmd |grep -Ewv "grep|less|more|zgrep|zless|vi|vim|gzip"|grep ${programName}|grep -w ${programSubName}|awk '{print $1" "$3" "$4" "$5" "$6" "$7}'|tail -1))
program="${programName}|${programSubName}"
else
programNum=$(ps -ef|grep -Ewv "grep|less|more|zgrep|zless|vi|vim|gzip"|grep ${programName}|wc -l)
info=($(ps -eo pid,lstart,etime,cmd |grep -Ewv "grep|less|more|zgrep|zless|vi|vim|gzip"|grep ${programName}|awk '{print $1" "$3" "$4" "$5" "$6" "$7}'|tail -1))
program=${programName}
fi
# 解析进程信息
pid=${info[0]}
startTime=$(date -d "${info[1]} ${info[2]} ${info[3]} ${info[4]}" "+%Y-%m-%d %H:%M:%S")
elapsedTime=${info[5]}
# 判断进程数是否一致
if [ ${programNum} -eq ${correctNum} ]
then
printf "${format_str}" "${program}" "ok" "${startTime}" "${elapsedTime}" "${programNum}" "${correctNum}" "${pid}"
else
printf "${format_str}" "${program}" "ERROR" "${startTime}" "${elapsedTime}" "${programNum}" "${correctNum}" "${pid}"
fi
}
### 打印表头
format_str="%-33s %7s %20s %14s %12s %12s %10s\n"
printf "\n${format_str}" "ProgramName" "Status" "StartTime" "RunningTime" "ProgramNum" "CorrectNum" "PID"
### 检查Client进程
for i in `cat canalInstance`
do
chk "CanalClient" 1 ${i}
done
### 检查Server进程
chk "AAAAAAAAAAAAAAAAAAA" 1 aaaaaaaa_00
chk "BBBBBBBBBBBBBBBBBBB" 1 bbbbbbbb_01
echo
ProgramName Status StartTime RunningTime ProgramNum CorrectNum PID
CanalClient|eeeeeeeeeeeeee ok 2019-08-20 18:14:52 5-14:21:12 1 1 19138
CanalClient|ddddddd ok 2019-08-20 18:14:46 5-14:21:18 1 1 18996
CanalClient|cccccc ok 2019-08-20 18:14:38 5-14:21:26 1 1 18723
CanalClient|ffffffff ok 2019-08-20 18:14:30 5-14:21:34 1 1 18654
CanalClient|hhhhhhhh ok 2019-08-20 18:14:24 5-14:21:40 1 1 18574
CanalClient|iiiiiiii ok 2019-08-20 18:14:16 5-14:21:48 1 1 18485
CanalClient|jjjjjjj ok 2019-08-20 18:14:11 5-14:21:53 1 1 18443
CanalClient|kkkkkkk ok 2019-08-20 18:14:06 5-14:21:58 1 1 18384
CanalClient|lllllll ok 2019-08-20 18:13:41 5-14:22:24 1 1 17437
CanalClient|mmmmmmm ok 2019-08-20 18:10:33 5-14:25:32 1 1 14997
CanalClient|lllllll ok 2019-08-20 18:10:13 5-14:25:52 1 1 14627
CanalClient|ooooooo ok 2019-08-20 18:09:48 5-14:26:17 1 1 13382
CanalClient|aaaaa ok 2019-08-20 18:21:42 5-14:14:23 1 1 28419
CanalClient|bbbb ok 2019-08-20 18:07:21 5-14:28:44 1 1 9664
AAAAAAAAAAAAAAAAAAA|aaaaaaaa_00 ok 2019-08-25 14:20:04 18:16:01 1 1 24445
BBBBBBBBBBBBBBBBBBB|bbbbbbbb_01 ok 2019-08-25 07:40:04 1-00:56:01 1 1 4999