[英]Centos 7: Auto restart application if it stopped
如果我的應用程序“Fiware IoT Agent”停止,我想自動重啟它,問題是它取決於 Mongo Db 數據庫和 Mosquitto 代理。 我的操作系統是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$
*蚊子經紀人
/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
的進程和pid
蒙戈DB的。
每隔幾秒(比如 10 秒)檢查兩個進程的pid
是否仍然存在,或者您也可以讓程序每隔幾秒觸摸一個文件,然后檢查文件修改時間以查看程序是否仍然存在。
如果程序沒有觸及文件,或者如果你只是使用pid
路由而 pid 不存在。 然后程序就死了。
重新啟動程序並獲取新的pid
並在永遠的while
循環中再次運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.