Linux下supervisor安装与使用

Posted by 撒得一地 on 2018年10月25日 in Linux笔记

最近碰到一个需求,需要在后台不断运行一个进程用于接收消息队列里面的数据。一开始想要用 nohub 这种方式来运行这个进程,即:nohup COMMAND & 这样。不过这样有个问题,当进程处理异常,进程可能会死掉,网上查了下,发现 supervisor 管理进程更靠谱,而且异常退出有重启进程机制。

下面介绍 Linux 下 supervisor 的安装和配置,在安装前,先简单了解下什么是守护进程。守护进程(Daemon)是一种运行在后台的特殊进程,它独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。

supervisor 简介

supervisor 由 python 开发,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。

supervisor 安装

	wget https://files.pythonhosted.org/packages/44/60/698e54b4a4a9b956b2d709b4b7b676119c833d811d53ee2500f1b5e96dc3/supervisor-3.3.4.tar.gz

	tar -zxvf supervisor-3.3.4.tar.gz

	cd supervisor-3.3.4

	python setup.py install

最后一步如果报错:

No local packages or download links found for meld3>=0.6.5
error: Could not find suitable distribution for Requirement.parse('meld3>=0.6.5')

解决办法:

	#下载meld
	wget https://pypi.python.org/packages/45/a0/317c6422b26c12fe0161e936fc35f36552069ba8e6f7ecbd99bbffe32a5f/meld3-1.0.2.tar.gz#md5=3ccc78cd79cffd63a751ad7684c02c91

	tar zxvf meld3-1.0.2.tar.gz

	cd meld3-1.0.2

	python setup.py install

supervisor 配置

首先创建目录和配置文件:

	mkdir /etc/supervisor

	echo_supervisord_conf > /etc/supervisor/supervisord.conf

然后修改 /etc/supervisor/supervisord.conf 的配置文件:

在文件结尾[include]节点处:

	;[include]

	;files = relative/directory/*.ini

把两个分号都去掉,记得[include]前面的分号注释也要去掉,然后 files = relative/directory/*.ini 修改为你自己想定义的目录,这里我改成这样:

	[include]

	files = /etc/supervisor/conf.d/*.ini

就是在 /etc/supervisor/ 目录下再 mkdir 创建一个 conf.d 目录,然后这个目录里面的配置文件 .ini 是用来定义进程的配置文件。

接着打开 /etc/supervisor/conf.d 然后创建一个进程配置文件,比如 test.ini ,然后里面的定义如下:

	[program:test]

	process_name=%(program_name)s_%(process_num)02d

	directory=/home/php/

	command=/home/php/local/webserver/php722/bin/php -f test.php

	autostart=true

	autorestart=true

	user=root

	numprocs=1

	redirect_stderr=true

	stdout_logfile=/home/php/test/test.log

上面 program 后面的 test 代表进程的名字,然后该进程的执行目录是 /home/php/ ,执行命令就是 /home/php/local/webserver/php722/bin/php -f test.php 。如果启动该进程,那么进程就会一直执行 /home/php/ 目录下的 test.php 文件。

supervisor 启动 && 常用命令

	启动:
	supervisord -c /etc/supervisor/supervisord.conf 

	重启:
	supervisorctl reload 重启

	修改配置文件后重新加载配置文件:
	supervisorctl update 

	启动某个进程:
	supervisorctl  start program_name 

	查看正在运行的进程:
	supervisorctl status

	关闭进程与supervisor:
	supervisorctl stop all 
	kill -9 pid (pid 为 supervisord 进程号) 

如果你已经配置了进程文件,那么 supervisord 启动时就会自动加载进程文件,然后启动守护你配置的进程。

本文地址:https://coderschool.cn/2881.html,转载请注明。

上一篇:

下一篇:

相关推荐

网站地图|XML地图

Copyright © 2015-2024 技术拉近你我! All rights reserved.
闽ICP备15015576号-1 版权所有©psz.