Linux 后台进程运行常见的有nohup,比如nohub command & ,但是这样使用起来并不是很优雅。这里介绍一个后台进程管理的工具-supervisor
介绍
Supervisor (http://supervisord.org) 是一个用 Python 写的进程管理工具,可以很方便的用来启动、重启、关闭进程(不仅仅是 Python 进程)。除了对单个进程的控制,还可以同时启动、关闭多个进程,比如很不幸的服务器出问题导致所有应用程序都被杀死,此时可以用 supervisor 同时启动所有应用程序而不是一个一个地敲命令启动。
安装
supervisor 的安装很简单,我这里是Centos7,直接用pip安装,yum安装的版本可能会比较老。这里安装的版本是3.311
pip install supervisor
如果没有pip命令的要首先yum安装一下1
yum instal python-pip -y
创建启动脚本
Centos71
vim /etc/systemd/system/supervisord.service
1 | # supervisord service for systemd (CentOS 7.0+) |
脚本地址:https://github.com/Supervisor/initscripts/blob/master/centos-systemd-etcs
设置开机自启动1
2systemctl enable supervisord
systemctl start supervisord
Centos6
1 | vim /etc/init.d/supervisord |
脚本参考地址:https://github.com/Supervisor/initscripts/blob/master/redhat-init-equeffelec
设置开机自启动1
2chmod +x /etc/init.d/superviord
chkconfig --add supervisord
创建配置文件
supervisor安装好之后默认是没有配置文件的,要通过下面这条命令生成配置文件。1
echo_supervisord_conf > /etc/supervisord.conf
修改配置文件
开启web管理界面1
2
3
4
5
6vim /etc/supervisord.conf
[inet_http_server] ; inet (TCP) server disabled by default
port=0.0.0.0:9001 ; (ip_address:port specifier, *:port for all iface)
;username=user ; (default is no username (open server))
;password=123 ; (default is no password (open server))
开启子配置文件1
2[include]
files = /etc/supervisor.conf/*.conf
启动supervisor
1 | #centos7 |
通过supervisorctl命令行登录
1 | supervisorctl |
通过web访问
举个栗子
这里我们用supervisor管理这个shell脚本
hello.sh1
2
3
4
5
6
while true
do
echo “hello word”
sleep 3
done
由于之前定义的supervisor子配置文件目录没有创建,我们手动创建一下1
mkdir /etc/supervisor.conf
然后创建一个管理hello.sh的子配置文件1
2cd /etc/supervisor.conf
vim hello.conf
1 | [program:hello] |
登录supervisor更新配置并启动1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23添加hello
add hello
hello: added process group
动态查看hello日志
fg hello
“hello word”
“hello word”
“hello word”
“hello word”
“hello word”
“hello word”
“hello word”
“hello word”
重启
restart hello
hello: stopped
hello: started
停止
stop hello
hello: stopped
移除
remove hello
hello: removed process group
配置文件详解
1 | [unix_http_server] |
参考: