根据时间和日期检查服务器是否被退回



(如果服务器显示时间如08:14-则打印服务器已启动,但如果服务器显示日期如Nov13-打印服务器未启动并发送警报消息)

#!/bin/ksh
var1="$(ps -ef | grep 'abc' | grep -v 'grep' | tr -s " " | cut -d ' ' -f5)"
var2="$(date "+%H:%M")"
date="$(date "+%b%d")"
if [ "$var1" == "$var2" ]; then
echo "Server has been bounced" > final.txt 
echo " Success"
elif expr "$var1" ">" "$var2" >/dev/null;  then
echo "Server has been bounced" > final.txt
echo " Success"  > final.txt
elif [ "$var1" == "$date" ];  then
echo "Server is not bounced" > final.txt 
echo " Failure"  > final.txt
mail -s " Failure,  Server is not bounced " final.abc@acb.com
fi   

我试着用服务器第5列的以下命令获取var1的输出,以检查服务器是否反弹或已启动

var1=echo "ps -ef | grep 'abc' | grep -v 'grep' | tr -s " " | cut -d ' ' -f5"

var1的输出将是日期或时间,这取决于服务器是否被反弹,如果被反弹则显示时间,如果没有则显示日期

var2=echo "date "+%H:%M" "

var2的输出将是今天的时间。

请记住,时间可能不同,也不是实时的,它正在检查,所以如果var1输出显示03:14,而当前时间是05:16,那么还需要显示服务器已启动,我正在尝试使用此

else if expr "$var1" ">" "$var2" >/dev/null

然后这个命令

日期=echo "date "+%b%d" "

日期输出将只是一个类似(Nov15)的格式,如果var1输出将是日期变量的格式,那么必须显示服务器没有反弹,也没有向上

但如果var1的输出将显示02:12这样的时间,则必须与var2的格式进行比较,并显示服务器被弹出并向上

在中间时间脚本被卡住了脚本正在工作,但日期一没有给出输出

通过以下操作,您可以获得自午夜以来的秒数:

$(($(date '+(%H*60+%M)*60+%S')))

ps中使用-o etimes,可以获得自进程运行以来的秒数。如果你知道PID,你可以做:ps -p <pid> -o etimes=。如果您不知道PID,您可以使用grep,就像您已经在做的那样:

ps -e -o etimes,command|grep abc|awk '{print $1}'

一旦您有了这两个值,您就可以比较进程运行时间是否大于午夜后的秒数。

相关内容

  • 没有找到相关文章

最新更新