supervisord

  • 是client/server 系统
  • 把不是守护进程的进程变成守护进程
  • 监控它自己启动的进程,类似于看门狗
  • 可以作为开机启动的一种封装
  • 可以精确控制进程的状态,而不是pidfile那么不准确

安装

说白了就是个python包,官方文档,我这里系统是centos6.5 root用户

pip install supervisor

一般安装完的时候显示安装路径,如果不在bin路径,就自己添加一个软连接

配置文件在 /etc/supervisord.conf

我这里安装之后没有发现,我先到安装目录下找找,没有在自己创建那个文件,如果启动没有找

到就在启动命令中添加配置文件路径。

配置

supervisord 提供了一个模板文件,执行下面shell文件或者输出到文件中,改改就可以用了

echo_supervisord_conf
#或者
echo_supervisord_conf > supervisord.conf

不过模板文件有点太多了,我们还是按照文档写点程序来配置把,这次的目标是启动一个django开发

服务器并且让他成为一个独立进程,可以控制这个进程。

建立一个最简单的django,并可以启动

[root@localhost ~]# pip install -i http://pypi.douban.com/simple django==1.6
[root@localhost ~]# su - lzz
[lzz@localhost ~]$ django-admin.py startproject lzztest
[lzz@localhost ~]$ cd lzztest/
[lzz@localhost lzztest]$ python manage.py runserver 8000 #看到可以正常启动,crtl+c关闭
[lzz@localhost lzztest]$ exit #切会到root用户下

编辑supervisord文件 文件的内容如下(有错误),文件的位置就是root的home路径 /root

user=lzz
command=/usr/bin/python /home/lzz/lzztest/manage.py runserver 8000
autostart=true
autorestart=true
stderr_logfile=/home/lzz/lzztest/logs/err.log
stdout_logfile=/home/lzz/lzztest/logs/out.log
stopsignal=INT

启动下观察效果,出现了一个错误。

[root@localhost ~]# supervisord -c ./supervisord.conf
Error: .ini file does not include supervisord section
For help, use /usr/bin/supervisord -h

意思是少了 [supervisrod] 配置项,可以参考 supervisord-section-settings, 修改配置文件如下,还有log文件最好先建立好,supervisord不会自己创建。

[program:djangotest]
user=lzz
command=/usr/bin/python /home/lzz/lzztest/manage.py runserver 8000
autostart=true
autorestart=true
stderr_logfile=/home/lzz/lzztest/logs/err.log
stdout_logfile=/home/lzz/lzztest/logs/out.log
stopsignal=INT

[supervisord]

再次启动:

[root@localhost ~]# supervisord -c /root/supervisord.conf

正常启动了,我们来看下进程: ps -efH|grep python

root 26253 1 0 02:57 ? 00:00:00 /usr/bin/python /usr/bin/supervisord -c /root/supervisord.conf
lzz 26254 26253 0 02:57 ? 00:00:00 /usr/bin/python /home/lzz/lzztest/manage.py runserver 8000
lzz 26255 26254 1 02:57 ? 00:00:01 /usr/bin/python /home/lzz/lzztest/manage.py runserver 8000

终端关闭,重新打开别的终端可以看到进程正常。

实验基本成功,后面进程之间关系,怎么自动启动和停止被控制的程序等以后在深入研究下。

参考:



本文出自 “orangleliu笔记本”博客,转载请务必保留此出处http://blog.csdn.net/orangleliu/article/details/41317887

作者: orangleliu

[系统运维]Supervisord安装和启动程序的更多相关文章

  1. Linux系统运维笔记(五),CentOS 6.4安装java程序

    Linux系统运维笔记(五),CentOS 6.4安装java程序 用eclipse编译通的java程序,现需要实施到服务器.实施步骤: 一,导出程序成jar包. 1,在主类编辑界面点右健,选  ru ...

  2. Linux系统运维笔记(四),CentOS 6.4安装Nginx

    Linux系统运维笔记(四),CentOS 6.4安装Nginx 1,安装编译工具及库文件 yum -y install make zlib zlib-devel gcc-c++ libtool op ...

  3. Linux系统运维笔记(四),CentOS 6.4安装 MongoDB

    Linux系统运维笔记(四),CentOS 6.4安装 MongoDB 1,下载 https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6 ...

  4. Linux系统运维相关的面试题 (问答题)

    这里给大家整理了一些Linux系统运维相关的面试题,有些问题没有标准答案,希望要去参加Linux运维面试的朋友,可以先思考下这些问题.   一.Linux操作系统知识 1.常见的Linux发行版本都有 ...

  5. 解决CentOS无法显示中文字体 | 系统运维 | Web2.0

    解决CentOS无法显示中文字体 | 系统运维 | Web2.0 About Me    博客园    devops    前端    张家港水蜜桃 傍晚好! 2013年09月12日 17:56:08 ...

  6. 浅谈Linux系统运维工程师必备技能

    一.什么是运维工程师 相信读者们必定听说过Linux,也听说过运维工程师.那么运维工程师是个什么概念呢? 百度百科上的官方解释如下: 运维工程师(Operations)在国内又称为运维开发工程师(De ...

  7. Linux系统运维笔记(一),查看系统版本和设置系统时间

    Linux系统运维笔记 查看系统版本和设置系统时间 查看系统版本 lsb_release -a (适用于所有的linux,包括Redhat.SuSE.Debian等发行版,但是在debian下要安装l ...

  8. 7.学完linux系统运维到底可以做什么?

    linux运维到底可以做什么?(略有改动原文.排版) 运维,很容易从字面理解为运营.维护. 很多朋友认为,在互联网公司中linux系统运维的工作就是安装系统,部署服务.处理紧急故障,为公司里的开发人员 ...

  9. Archlinux系统运维

    本文将针对Archlinux下的系统运维进行介绍. 内核相关 查看当前内核版本 123 uname -r------------------------------------------------ ...

随机推荐

  1. C#多线程Thread.Join()的详解

    class TestThread { private static void FirstThreadFun() { ; i < ; i++) { Console.WriteLine(Thread ...

  2. 六,前端---viewport

    移动设备上的viewport就是设备的屏幕上能用来显示我们的网页的那一块区域,再具体一点,就是浏览器上用来显示网页的那部分区域,但viewport又不局限于浏览器可视区域的大小,它可能比浏览器的可视区 ...

  3. PostgreSQL 常用系统自带方法

    数据库字符编码问题:    -- 查看PostgreSQL数据库服务器端编码:    show server_encoding;    -- 查看PostgreSQL客户端工具psql编码:    s ...

  4. NLog日志管理工具(转)

    一.通过VS建立一个控制台应用程序. 二.打开程序包管理器控制台.具体操作如下:[工具]>[库程序包管理器]>[程序包管理器控制台]. 三.在程序包管理器控制台下输入命令:Install- ...

  5. java---interrupt、interrupted和isInterrupted的区别

    1.interrupt()  interrupt方法用于中断线程.调用该方法的线程的状态为将被置为"中断"状态. 注意:线程中断仅仅是置线程的中断状态位,不会停止线程.需要用户自己 ...

  6. java中的方法引用

    引用静态方法:类名称::static 方法名称: 引用某个对象的方法:对象::普通方法: 引用特定类方法:特定类::方法 引用构造方法:类名称::new 范例:引用静态方法 package com.j ...

  7. python数据挖掘_Json结构分析

    json是一种轻量级的数据交换格式,也可以说是一种配置文件的格式 这种格式的文件是我们在数据处理经常会遇到的 python提供内置的模块json,只需要在使用前导入即可 你可以通过帮助函数查看json ...

  8. [SCOI 2010]传送带

    Description 题库链接 在一个 \(2\) 维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段 \(AB\) 和线段 \(CD\) .在 \(AB\) 上的移动速度为 ...

  9. ●BZOJ 4318 OSU!

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=4318题解: 期望dp 如果我们能够得到以每个位置结尾形成的连续1的长度的相关期望,那么问题就 ...

  10. 洛谷mNOIP模拟赛Day2-将军令

    题目背景 pdf题面和大样例链接:http://pan.baidu.com/s/1cawM7c 密码:xgxv 历史/落在/赢家/之手 至少/我们/拥有/传说 谁说/败者/无法/不朽 拳头/只能/让人 ...