检查并运行/重启进程,bash

时间:2017-10-30 20:21:10

标签: java bash

我是bash脚本的新手,所以在编写了一些代码之后,我就陷入了困境:)情况是这样的:我有几个(三个)java JAR在系统启动后在后台运行。需要有定期(10秒)检查所有这些JAR是否正在运行的脚本,即使其中一个JAR没有运行,它也应该重新启动JAR。 这是我的代码,请更正或提供更好的代码。这段代码工作正常,但是有一点问题:如果其中一个JAR没有工作并且我运行这个脚本,它就开始运行了,但是我不知道是哪个启动了。因此,需要有一些通用脚本,它将了解停止哪个进程并仅重新启动它并在屏幕中通知。谢谢。

#!/bin/bash

vta_oar=`netstat -an | fgrep tcp | fgrep LISTEN | fgrep :8091`     #vta-oar 8091
vta_vas=`netstat -an | fgrep tcp | fgrep LISTEN | fgrep :8090`     #vta-vas 8090
vta_autokit=`netstat -an | fgrep tcp | fgrep LISTEN | fgrep :8093` #vta_autokit 8093

if [[ -z "$vta_oar" ]] && [[ -z "$vta_vas" ]]
        then
           echo "Starting Services VTA_OAR/VTA_VAS"
           java -jar /var/www/html/vta-oar.jar >> /var/log/vta-oar.log &
           java -jar /var/www/html/vta-vas.jar >> /var/log/vta-vas.log &
elif [[ -z "$vta_vas" ]] && [[ -z "$vta_autokit" ]]
        then
           echo "Starting Services VTA_VAS/VTA_AUTOKIT"
           java -jar /var/www/html/vta-vas.jar >> /var/log/vta-vas.log &
           java -jar /var/www/html/vta-autokit.jar >> /var/log/vta-autokit.log &
elif [[ -z "$vta_autokit" ]] && [[ -z "$vta_oar" ]]
        then
           echo "Starting Services VTA_AUTOKIT/VTA_VAS_OAR"
           java -jar /var/www/html/vta-autokit.jar >> /var/log/vta-autokit.log &
           java -jar /var/www/html/vta-oar.jar >> /var/log/vta-oar.log &
else
        echo "All services are running..."
fi

0 个答案:

没有答案