Centos 7:自动重启应用程序,如果它停止了



我想自动重启我的应用程序"Fiware IoT Agent",如果它停止了,问题是它依赖于mongodb数据库和mosquito broker。我的操作系统是centOS 7

以下是我用来按以下顺序启动我的三个应用程序的命令:

* Mongo:

/usr/local/iot/mongodb-linux-x86_64-3.0.5/bin/mongod --dbpath /usr/local/iot/mongodb-linux-x86_64-3.0.5/data/db$

*蚊子经纪人

/usr/sbin/mosquitto -c /etc/iot/mosquitto.conf &
pid=$!
echo $pid > /var/run/iot/mosquitto.pid

物联网代理:

然后我使用以下命令启动我的应用程序

export LD_LIBRARY_PATH=/usr/local/iot/lib
/usr/local/iot/bin/iotagent -i 192.168.1.11 -p 80 -v DEBUG -d /usr/local/iot/lib -c /etc/iot/config.json

我如何启动我的应用程序,如果它停止了,知道它依赖于其他两个应用程序?例如,如果Mongo DB停止了,我必须能够重新启动它,然后重新启动我的应用程序。

CentOS 7使用systemd。您可以为每个应用程序创建systemd服务,并指定它们之间的依赖关系。为需要自动重启的服务指定"Restart=always"

您可以创建自己的看门狗代码。当你启动你的应用程序得到进程的pid和mongodb的pid

每隔几秒,如10秒检查两个进程的pid仍然存在,或者你也可以让程序每隔几秒触摸一个文件,然后检查文件修改时间,看看程序是否还活着。

如果程序没有触及文件,或者如果您只使用pid路由,并且pid不存在。那么程序就死了。

重新启动程序并获得新的pid,然后在永久的while循环中再次运行。

相关内容

最新更新