Upstart是Ubuntu用来进行服务进程管理的服务,本文介绍如何利用upstart来通过Centos操作系统管理我们自己开发的应用程序。
什么时候要管理我们的应用程序?当我们开发出服务类的应用程序,比如后台服务器程序,需要长时间不间断运行的程序,当我们需要关闭时通常需要查看一下线程号再kill掉(当然你也可以写一个脚本做这件事),还需要检查程序什么时候崩溃了及时重启,当部署很多机器时非常麻烦。这时用upstart管理程序,可以用start stop启动、关闭服务,同时可以监控你的服务,再他出现意外退出时重新启动。
下面我就开始一步一步开始用upstart管理我们的程序吧!
1、安装upstart
用 yum install upstart安装upstart
2、添加配置文件
安装好upstart后,需要为每一个你想要通过upstart管理的程序添加一个配置文件。这些文件放在/etc/init目录下,文件名为你这个服务的名称,后缀名为.conf。如:myServerName.conf。
3、最简单的配置文件内容:
author "lihanlin" description "test" start on startup stop on shutdown respawn console output exec /lihanlin/test/testServer
第一行是指定作者,第二行是程序的描述 这两行不起任何作用,只是说明
第四行的start on是配置发生某些事件时启动程序,这里意思是开机时启动程序。还可以用如下配置,在文件系统跟网络正常时启动程序
start on filesystem and net-device-up IFACE=lo
第五行的stop on是配置发生某些事件时关闭程序,这里的意思是关机时候关闭程序。
第六行respawn是程序意外关闭时自动重启程序。还可以用respawn limit: 命令,设置服务异常停止后重启次数及间隔时间。比如:
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
4、启动关闭程序:
你的服务名字是配置文件(不包括后缀名)名字
启动服务是initctl start myServerName(或者start myServerName)
关闭服务是initctl start myServerName(或者stop myServerName)
查询服务状态是initctl status myServerName(或者stop myServerName)
5、带脚本的配置文件:
假设我的这个/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