Centos 7:应用程序停止时自动重启
Centos 7: Auto restart application if it stopped
我想自动重启我的应用程序"Fiware IoT Agent"如果它停止了,问题是它取决于Mongo数据库和Mosquitto代理.我的OS是分OS 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 数据库停止,我必须能够重新启动它,然后重新启动我的应用程序。
CentOS 7 使用 systemd。您可以为每个应用程序创建 systemd 服务并指定它们之间的依赖关系。并为需要自动重启的服务指定“Restart=always”。
您可以创建自己的看门狗代码。当您启动应用程序时,获取进程的 pid
和 mongo 数据库的 pid
。
每隔几秒(比如 10 秒)检查两个进程的 pid
是否仍然存在,或者您也可以让程序每隔几秒触摸一个文件,然后检查文件修改时间以查看如果程序还活着。
如果程序没有触及该文件,或者如果您只走 pid
路线并且 pid 不存在。然后程序就死了
重新启动程序并获取新的 pid
并在永远的 while
循环中再次运行。
我想自动重启我的应用程序"Fiware IoT Agent"如果它停止了,问题是它取决于Mongo数据库和Mosquitto代理.我的OS是分OS 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 数据库停止,我必须能够重新启动它,然后重新启动我的应用程序。
CentOS 7 使用 systemd。您可以为每个应用程序创建 systemd 服务并指定它们之间的依赖关系。并为需要自动重启的服务指定“Restart=always”。
您可以创建自己的看门狗代码。当您启动应用程序时,获取进程的 pid
和 mongo 数据库的 pid
。
每隔几秒(比如 10 秒)检查两个进程的 pid
是否仍然存在,或者您也可以让程序每隔几秒触摸一个文件,然后检查文件修改时间以查看如果程序还活着。
如果程序没有触及该文件,或者如果您只走 pid
路线并且 pid 不存在。然后程序就死了
重新启动程序并获取新的 pid
并在永远的 while
循环中再次运行。