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    

第七行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

【转】【Centos】Centos下用upstart管理自己的服务程序的更多相关文章

  1. CentOS vps下,安装xfce/KDE/GNOME桌面+vncserver进行远程管理

    CentOS vps下,安装xfce/KDE/GNOME桌面+vncserver进行远程管理 首先安装桌面环境,我选择的是xfce,轻量级桌面,小巧实用不占太多内存,(占用内存方面,xfce少于kde ...

  2. centos Linux下磁盘管理 parted,df ,du,fdisk,partprobe,mkfs.ext4,mount,/etc/fstab,fsck,e2fsck,mk2efs,tmpfs ,nr_inodes, LVM,传统方式扩容文件系统 第七节课

    centos Linux下磁盘管理   parted,df ,du,fdisk,partprobe,mkfs.ext4,mount,/etc/fstab,fsck,e2fsck,mk2efs,tmpf ...

  3. CentOS 7下关于systemd的一些唠叨话一:systemd的特点和使用

    摘要 近年来,Linux 系统的 init 进程经历了两次重大的演进,传统的 sysvinit 已经逐渐淡出历史舞台,新的 UpStart 和 systemd 各有特点,越来越多的 Linux 发行版 ...

  4. CentOS 7 下安装 LEMP 服务(nginx、MariaDB/MySQL 和 php)

    原文 CentOS 7 下安装 LEMP 服务(nginx.MariaDB/MySQL 和 php) LEMP 组合包是一款日益流行的网站服务组合软件包,在许多生产环境中的核心网站服务上起着强有力的作 ...

  5. CentOS系统下Redis安装和自启动配置的步骤

    相信大家都知道Redis是一个C实现的基于内存.可持久化的键值对数据库,在分布式服务中常作为缓存服务.所以这篇文章将详细介绍在CentOS系统下如何从零开始安装到配置启动服务.有需要的可以参考借鉴. ...

  6. CentOS 7下安装vertica记录

    CentOS 7下安装vertica记录 1.    安装好centeros 并更新 Centeros安装就不说了,安装完之后联网环境下 yum update.更新下,使得那些包都是新的.(要想用中文 ...

  7. CentOS 7 下安装jdk1.8(转)

    原文:https://blog.argcv.com/articles/3155.c CentOS 7下目前默认是jdk1.6和1.7.若需要更高版本的1.8,我们就需要一点额外的手段了. 首先,我们需 ...

  8. linux系统Centos环境下搭建SVN服务器及权限配置

    linux系统Centos环境下如何搭建SVN服务器以及svnserve.conf.authz.passwd配置文件详细介绍   至于svn的概念,这里就不做详细阐述了,可以自行百度.简单来讲就是一个 ...

  9. centos 7 下多网卡绑定+ vlan 网卡配置

    一.前言 CentOS7之前系统提供给用户的是bonding driver来实现链路聚合,实际上bonding适用于大多数应用.Bonding driver的架构是由内核空间完全控制.管理. Team ...

随机推荐

  1. 使用sqoop将MySQL数据库中的数据导入Hbase

    使用sqoop将MySQL数据库中的数据导入Hbase 前提:安装好 sqoop.hbase. 下载jbdc驱动:mysql-connector-java-5.1.10.jar 将 mysql-con ...

  2. nginx check_http_send type=http 查检测不到后端TOM的存活

    原因:定位到../conf/server.xml中 <Connector port="8020" protocol="org.apache.coyote.http1 ...

  3. Fluent UDF【6】:预处理命令

    今天要讲的内容是关于C语言的预处理.搞清楚了这个,就可以分析UDF中的各种头文件源代码,从此写UDF不求人. 1 关于预处理 在UDF的各种头文件中(文件路径D:\Program Files\ANSY ...

  4. non-deterministic-turing-machine

    https://stackoverflow.com/questions/13524011/i-do-not-understand-the-concept-of-non-deterministic-tu ...

  5. 【内核】linux内核启动流程详细分析

    Linux内核启动流程 arch/arm/kernel/head-armv.S 该文件是内核最先执行的一个文件,包括内核入口ENTRY(stext)到start_kernel间的初始化代码, 主要作用 ...

  6. 【Socket】linux网络扫描程序开发

      1.mystery引入    1)系统入侵步骤:系统发现->漏洞探测->漏洞利用->痕迹清除    2)扫描器分类:主机与网络扫描器:端口服务扫描器:服务漏洞扫描器    3)T ...

  7. 如何添加查找 ng vue 客户端快捷方式

    1.查找文件的安装路径:右键: 2.然后resources里面的文件: 查看文件名的后缀: 3.asar -h 查找帮助 4.npm i asar -g 5.asar e app.asar rapp ...

  8. ubuntu下安装与卸载软件方法

    http://www.cnblogs.com/JamyWong/archive/2009/11/19/1606442.html 1.通过deb包安装的情况:安装.deb包:代码:sudo dpkg - ...

  9. C语言禁术——goto语句

    goto语句是一种无条件转移语句,goto 语句的使用格式为:     goto  语句标号;其中标号是一个有效的标识符,这个标识符加上一个“:”(冒号)一起出现在函数内某处,执行goto语句后,程序 ...

  10. poj1077(康托展开+bfs+记忆路径)

    题意:就是说,给出一个三行三列的数组,其中元素为1--8和x,例如: 1 2 3 现在,需要你把它变成:1 2 3 要的最少步数的移动方案.可以右移r,左移l,上移u,下移dx 4 6 4 5 67 ...