• 【转】【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 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

  • 相关阅读:
    动态二维码
    二维码
    购物车
    logback学习与配置使用
    UML类图几种关系的总结
    java.lang.Excetion,java.lang.RuntimeException,java.lang.Error有什么区别?
    Java编程最差实践
    Hibernate利用@DynamicInsert和@DynamicUpdate生成动态SQL语句
    从 Java 代码到 Java 堆
    Project configuration is not up-to-date with pom.xml
  • 原文地址:https://www.cnblogs.com/mqxs/p/8744520.html
Copyright © 2020-2023  润新知