天天看点

supervisor 重启_旗鱼云梯Linux 后台进程管理利器Supervisor

旗鱼云梯Linux Supervisor进程管理器

supervisor就是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台运行进程,并监控进程状态,异常退出时能自动重启。

Supervisord将通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,并且在程序以外中止后,迅速自动重新启动它们,不用再自己编写脚本来监控程序是否正常运行,非常方便。

Supervisord可以很方便的获取进程运行状态,启动、停止、重启一个或多个进程,对于不熟悉shell命令的用户来说是非常方便简单易用的工具。Supervisor已经存在了很多年了,是一个非常成熟稳定的进程管理工具。

Supervisord的安装部署,进程的创建管理对于一般用户来说还是有些麻烦和不易的。用户只想要一个在程序异常终止后自动重启程序的工具,或配置开机自启程序,并不想明白配置文件参数是什么意思,怎么配置等,毕竟不是搞这方面的。Supervisord的web管理工具又非常的简陋,只能控制并不能创建进程,还是需要手动创建配置文件。

旗鱼云梯根据用户的需求开发了基于supervisord管理器的web管理工具,非常方便使用,非常适合一般用户。

supervisor 重启_旗鱼云梯Linux 后台进程管理利器Supervisor

下面我们创建一个进程来试一下

1. 创建一个python程序,每秒打印一次当前时间

a)

supervisor 重启_旗鱼云梯Linux 后台进程管理利器Supervisor

b) 这里有个重点是,Supervisord只能管理前台进程,也就是阻塞进程。就像test.py脚本,运行后会一直阻塞这并不会结束,每隔一秒输出当前时间,如果没有while True, 那么运行后会立即结束并不会阻塞在那里,因为已经运行结束了Supervisord管理器就无法管理它了。

2. 创建Supervisord管理进程

a)

supervisor 重启_旗鱼云梯Linux 后台进程管理利器Supervisor

b) 运行目录就是 test.py脚本所在目录

c) 启动命令就是在命令行中运行test.py脚本时执行的命令,在这里要加一个 -u参数,因为print输出是有缓冲区的,无法立即输出,直到缓冲区满,-u参数表示无缓冲区,立即输出。

3. 创建成功,可以看到进程id,运行状态,运行时间,日志目录,并且能重启,停止,删除进程等操作。

supervisor 重启_旗鱼云梯Linux 后台进程管理利器Supervisor

a) 点击查看日志,进入日志目录, error.log是程序运行错误日志,output.log是输出日志,我们每间隔一秒输出的当前时间就在这个日志里

i.

supervisor 重启_旗鱼云梯Linux 后台进程管理利器Supervisor

ii.

supervisor 重启_旗鱼云梯Linux 后台进程管理利器Supervisor

4. 下面来验证一下,程序异常终止的时候,Supervisord管理器是否能自动重启进程呢?

a)

supervisor 重启_旗鱼云梯Linux 后台进程管理利器Supervisor

b)

supervisor 重启_旗鱼云梯Linux 后台进程管理利器Supervisor

c)

supervisor 重启_旗鱼云梯Linux 后台进程管理利器Supervisor

在命令行中手动结束test.py 这个进程,可以看到进程结束成功,Supervisord管理器立即自动重启了test.py程序。

旗鱼云梯每分钟检测Supervisord管理器主程序是否启动,如未启动会自动启动Supervisord管理器,并且对Supervisord管理器主程序配置了开机自启,Supervisord启动的时候会自动启动它所管理程序。因此如果需要配置开机自启程序的话,可以添加到Supervisord管理器中,即可实现程序的开机自启功能。