2017.7.21 linux下进程管理工具supervisord的安装与使用

时间:2021-01-17 14:55:51

参考来自:http://blog.haohtml.com/archives/15145

 

0 操作环境

2017.7.21 linux下进程管理工具supervisord的安装与使用

 

1 supervisord的介绍

Supervisord是用Python实现的一款非常实用的进程管理工具。supervisord会帮你把管理的应用程序转成daemon程序,而且可以方便的通过命令开启、关闭、重启等操作,而且它管理的进程一旦崩溃会自动重启,这样就可以保证程序执行中断后的情况下有自我修复的功能。

 

2 supervisord的安装

2.1 执行sudo easy_install supervisor

注意:不是supervisord!没有d!

2017.7.21 linux下进程管理工具supervisord的安装与使用

 

2.2 elkuser is not in the sudoers file. This incident will be reported

执行上条命令的时候,可能会报错误:elkuser is not in the sudoers file. This incident will be reported。原因是:用户xxx没有被加到sudo的配置文件里。

(1)visudo

切换到root用户或者用root用户登录,否则报无权限。执行:visudo。

2017.7.21 linux下进程管理工具supervisord的安装与使用

 

(2)xxx ALL=(ALL) ALL

 在打开的配置文件中,找到root ALL=(ALL) ALL,在下面添加一行:elkuser ALL=(ALL) ALL ,其中elkuser是要加入的用户名称。修改后退出保存,再回到elkuser,就能执行sudo easy_install supervisord命令了。

 2017.7.21 linux下进程管理工具supervisord的安装与使用

 

(3)sudo easy_install supervisor

从root用户切换回elkuser,执行sudo easy_install supervisor。

 

2.3 supervisord和supervisorctl

supervisord一共有两个类型的命令:supervisord和supervisorctl。安装完成后,可以在/user/bin路径下找到。

2017.7.21 linux下进程管理工具supervisord的安装与使用

 

3 supervisord的配置

3.1 执行echo_supervisord_conf > /etc/supervisord.conf

supervisord默认的配置文件路径为/etc/supervisord.conf。生成/etc/supervisord.conf后,编辑此示例配置文件即可。

 2017.7.21 linux下进程管理工具supervisord的安装与使用

 

3.2 bash:/etc/supervisord.conf : Permission denied

当报这个错误的时候,可以先将配置文件生成在别处,然后再复制在/etc/supervisord.conf中。

2017.7.21 linux下进程管理工具supervisord的安装与使用

 

2017.7.21 linux下进程管理工具supervisord的安装与使用

 

执行完这两条语句后:

2017.7.21 linux下进程管理工具supervisord的安装与使用

 

3.3 supervisord.conf

其他的详细配置略(都采用的默认配置),这里在后面增加配置了三个program,名字分别为elasticsearch,logstash,kibana。

2017.7.21 linux下进程管理工具supervisord的安装与使用

 

4 supervisord的使用

4.1 /usr/bin/supervisord -c /etc/supervisord.conf

执行完此命令,就使得配置文件生效,所有配置在conf中的program都启动了。比如:查看elasticsearch,已经成功启动。并且需要通过supervisorctl的stop命令来关闭。而关闭此登录会话,或者ctrl+c,进程也继续在执行,实现了后台执行。

2017.7.21 linux下进程管理工具supervisord的安装与使用

 

4.2 supervisord的一些常用命令

Supervisord安装完成后有两个可用的命令行supervisord 和 supervisorctl,命令使用解释如下:

1 supervisord,初始启动Supervisord,启动、管理配置中设置的进程。
2
3 supervisorctl stop programxxx,停止某一个进程(programxxx)
4 supervisorctl start programxxx,启动某个进程
5 supervisorctl restart programxxx,重启某个进程
6 supervisorctl stop all,停止全部进程,注:start、restart、stop都不会载入最新的配置文件。
7 supervisorctl start all,开启全部进程。
7 supervisorctl reload,载入最新的配置文件,并按新的配置启动、管理所有进程。

 

示例:

2017.7.21 linux下进程管理工具supervisord的安装与使用

 

5 遇到的问题

操作过程:

1 supervisorctl start all
2 修改logstsh的配置文件
3 supervisorctl stop logstash
4 supervisorctl start logstash

 

但是却始终没有获取到最新的日志信息。

2017.7.21 linux下进程管理工具supervisord的安装与使用

 

后来在bin目录下重启logstash才行。

2017.7.21 linux下进程管理工具supervisord的安装与使用

 2017.7.21 linux下进程管理工具supervisord的安装与使用

 

即使执行supervisorctl reload ,update等,都不行。执行在bin目录下更新配置文件。这是为什么。