Centos 7:如果停止则自动重启应用程序

时间:2015-08-07 13:01:52

标签: linux mongodb centos fiware mosquitto

我想自动重启我的应用程序“Fiware IoT Agent”如果它停止了,问题在于它取决于Mongo Db数据库和Mosquitto代理。我的OS是centOS 7

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

*蒙戈:

/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$

* Mosquitto经纪人

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

Iot Agent:

使用此命令启动我的应用程序

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停止,我必须能够重新启动它,然后重新启动我的应用程序。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您可以创建自己的看门狗代码。当您启动应用程序时,请获取该进程的pid和mongo DB的pid

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

如果程序没有触及该文件,或者你去了pid路由并且pid不存在。程序已经死了。

重新启动程序并获取新的pid并在永久while循环中重新开始。