(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未给出输出
1条答案
按热度按时间6tdlim6h1#
使用下面的方法,您可以获得自午夜以来的秒数:
在
ps
中使用-o etimes
,可以得到进程运行以来的秒数。如果知道PID,可以执行以下操作:ps -p <pid> -o etimes=
。如果您不知道PID,可以使用grep
,就像您已经在做的那样:获得这两个值后,可以比较进程运行时间是否大于自午夜以来的秒数。