【转】【Centos】Centos下用upstart管理自己的服务程序
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管理自己的服务程序的更多相关文章
- CentOS vps下,安装xfce/KDE/GNOME桌面+vncserver进行远程管理
CentOS vps下,安装xfce/KDE/GNOME桌面+vncserver进行远程管理 首先安装桌面环境,我选择的是xfce,轻量级桌面,小巧实用不占太多内存,(占用内存方面,xfce少于kde ...
- 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 ...
- CentOS 7下关于systemd的一些唠叨话一:systemd的特点和使用
摘要 近年来,Linux 系统的 init 进程经历了两次重大的演进,传统的 sysvinit 已经逐渐淡出历史舞台,新的 UpStart 和 systemd 各有特点,越来越多的 Linux 发行版 ...
- CentOS 7 下安装 LEMP 服务(nginx、MariaDB/MySQL 和 php)
原文 CentOS 7 下安装 LEMP 服务(nginx.MariaDB/MySQL 和 php) LEMP 组合包是一款日益流行的网站服务组合软件包,在许多生产环境中的核心网站服务上起着强有力的作 ...
- CentOS系统下Redis安装和自启动配置的步骤
相信大家都知道Redis是一个C实现的基于内存.可持久化的键值对数据库,在分布式服务中常作为缓存服务.所以这篇文章将详细介绍在CentOS系统下如何从零开始安装到配置启动服务.有需要的可以参考借鉴. ...
- CentOS 7下安装vertica记录
CentOS 7下安装vertica记录 1. 安装好centeros 并更新 Centeros安装就不说了,安装完之后联网环境下 yum update.更新下,使得那些包都是新的.(要想用中文 ...
- CentOS 7 下安装jdk1.8(转)
原文:https://blog.argcv.com/articles/3155.c CentOS 7下目前默认是jdk1.6和1.7.若需要更高版本的1.8,我们就需要一点额外的手段了. 首先,我们需 ...
- linux系统Centos环境下搭建SVN服务器及权限配置
linux系统Centos环境下如何搭建SVN服务器以及svnserve.conf.authz.passwd配置文件详细介绍 至于svn的概念,这里就不做详细阐述了,可以自行百度.简单来讲就是一个 ...
- centos 7 下多网卡绑定+ vlan 网卡配置
一.前言 CentOS7之前系统提供给用户的是bonding driver来实现链路聚合,实际上bonding适用于大多数应用.Bonding driver的架构是由内核空间完全控制.管理. Team ...
随机推荐
- Chrome多线程下载
https://github.com/jae-jae/camtd https://aria2.github.io/ 切换到解压目录D:\Tools\aria2-1.34.0-win-64bit中,打开 ...
- MyBatis传入集合 list 数组 map参数的写法
foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合.foreach元素的属性主要有item,index,collection,open,separator,close.ite ...
- 菜鸟学EJB(一)——第一个实例
EJB用了那么长时间了,从来没写过关于它的东西,挺对不住它的.今天先写一个简单的小实例,虽然小但是却能体现出EJB的核心——分布式.我们可以将业务逻辑的接口跟实现部署到一台机器上,将调用它们的客户端部 ...
- android笔记---百度地图api应用 (一)
package com.example.bdtest; import com.baidu.mapapi.MKEvent; import com.baidu.mapapi.MKPlanNode; imp ...
- 灾备系统的评判指标:RTO、RPO
RTO(RecoveryTime Object)是指灾难发生后,从IT系统崩溃导致业务停顿之刻开始,到IT系统恢复至可以支持各部门运作,业务恢复运营之时,此两点之间的时间段称为RTO. RPO(Rec ...
- MySQL字段数据全部查出【只保留中文、英文、数字、空格的词表】
select * from xxx_xxx_bak where slot_type_id in ('xxx', 'xxx') ; by @大超超 记录备查
- Lintcode: First Bad Version 解题报告
First Bad Version http://lintcode.com/en/problem/first-bad-version The code base version is an integ ...
- linux环境下 卸载 Oracle11G
1.使用SQL*PLUS停止数据库 [oracle@OracleTest oracle]$ sqlplus log SQL> connect / as sysdba SQL> shutdo ...
- curl Array to string conversion 错误
0x00 故障 由于GuzzleHttp在iis上使用错误,于是开始替换其为Unirest,没想到发送了一个curl Array to string conversion 错误 0x01 原因 跟踪调 ...
- Install Shield常用函数以及参数
nstall Shield函数库 1 库函数综述InstallShield包含300多个内部库函数,用户可在安装脚本中调用它们来创建程序组,操作文件夹,处理目录,监督安装状态,创建对话框,操作文件及 ...