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