Upstart是Ubuntu用來進行服務進程管理的服務,本文介紹如何利用upstart來經過Centos操做系統管理咱們本身開發的應用程序。javascript
何時要管理咱們的應用程序?當咱們開發出服務類的應用程序,好比後臺服務器程序,須要長時間不間斷運行的程序,當咱們須要關閉時一般須要查看一下線程號再kill掉(固然你也能夠寫一個腳本作這件事),還須要檢查程序何時崩潰了及時重啓,當部署不少機器時很是麻煩。這時用upstart管理程序,能夠用start stop啓動、關閉服務,同時能夠監控你的服務,再他出現意外退出時從新啓動。java
下面我就開始一步一步開始用upstart管理咱們的程序吧!node
用 yum install upstart安裝upstartubuntu
安裝好upstart後,須要爲每個你想要經過upstart管理的程序添加一個配置文件。這些文件放在/etc/init目錄下,文件名爲你這個服務的名稱,後綴名爲.conf。如:myServerName.conf。服務器
author "lihanlin" description "test" start on startup stop on shutdown respawn console output exec /lihanlin/test/testServer
第一行是指定做者,第二行是程序的描述 這兩行不起任何做用,只是說明網絡
第四行的start on是配置發生某些事件時啓動程序,這裏意思是開機時啓動程序。還能夠用以下配置,在文件系統跟網絡正常時啓動程序post
start on filesystem and net-device-up IFACE=lo
第五行的stop on是配置發生某些事件時關閉程序,這裏的意思是關機時候關閉程序。學習
第六行respawn是程序意外關閉時自動重啓程序。還能夠用respawn limit: 命令,設置服務異常中止後重啓次數及間隔時間。好比:spa
respawn limit 10 5
第七行console是配置輸入輸出。你能夠改變設置指定工做將信息輸出到哪裏,從哪裏得到輸入。console字段你能夠指定下列參數之一:output(從 /dev/console得到輸入輸出);owner(輸出和Control-C發送給主進程) ;none(1.4版本以前的默認參數,輸入輸出指定到/dev/null);log(1.4版本級之後的默認參數,版本太低時沒有此參數。將輸出寫到log文件中,該文件默認放在/var/log/upstart/中,能夠經過命令行參數--logdir <directory>設置log文件夾)操作系統
第九行是最關鍵的,exec參數指定了主程序執行的命令,就是你要監控的程序了。若是不是二進制文件,還能夠是以下形式:(例如node程序)
exec /usr/bin/node /lihanlin/server.js
你的服務名字是配置文件(不包括後綴名)名字
啓動服務是initctl start myServerName(或者start myServerName)
關閉服務是initctl start myServerName(或者stop myServerName)
查詢服務狀態是initctl status myServerName(或者stop myServerName)
假設個人這個/mnt/kvm/test/testServer 服務須要相對路徑下的test.so庫文件,那麼這個時候用上面的配置文件就不能正常的啓動服務了,由於相對路徑找不到這個庫文件。再或者須要作一寫腳本處理等等,就須要再執行主程序時運行一下腳本。爲了解決這個問題就須要用下面這種配置:
author "lihanlin" description "counttest" start on filesystem and net-device-up IFACE=lo stop on shutdown respawn console log script cd /lihanlin/test exec ./testServer end script
這裏script - end script中間編寫了一些腳本,是主運行腳本。進入到/lihanlin/test文件夾裏再啓動服務,就能找到相對路徑下的庫文件了。
除了主運行腳本,還有:
pre-start: 腳本塊,在主運行腳本以前執行的腳本
post-start: 腳本塊,在主運行腳本以後,running狀態以前
pre-stop: 腳本塊,在執行stop以前
post-stop: 腳本塊,在主運行腳本被殺死以後
這裏只介紹了最簡單的管理程序的方法,upstart還有不少功能,還想更加細緻的學習的同窗能夠查看官方文檔進行學習:
http://upstart.ubuntu.com/cookbook/
原文地址:https://blog.csdn.net/u011344514/article/details/49863091