shell 检查服务器是否退回,并附上时间和日期

vawmfj5a  于 2022-11-16  发布在  Shell
关注(0)|答案(1)|浏览(132)

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

#!/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列的以下命令获取var 1的输出,以检查服务器是否已反弹或已启动
变量1 = echo "ps -ef | grep 'abc' | grep -v 'grep' | tr -s " " | cut -d ' ' -f5"
var 1输出将是日期或时间取决于服务器是否被退回,如果退回则显示时间如果未退回则显示日期
变量2 = echo "date "+%H:%M" "
var 2输出将是今天时间
请记住,时间可能不同,也不是真实的的,它正在检查,因此,如果var 1输出显示03:14,当前时间为05:16,则还需要显示服务器已启动,我正在尝试使用此选项

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

然后这个命令
日期= echo "date "+%b%d" "
如果var 1输出将采用日期变量的格式,则日期输出将仅采用类似(Nov 15)的格式,然后必须显示服务器未反弹且未启动
但是,如果var 1输出将显示类似02:12的时间,则必须与var 2的格式进行比较,并显示服务器已反弹和启动
在中间时间脚本仍在运行,但日期1未给出输出

6tdlim6h

6tdlim6h1#

使用下面的方法,您可以获得自午夜以来的秒数:

$(($(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}'

获得这两个值后,可以比较进程运行时间是否大于自午夜以来的秒数。

相关问题