旗鱼云梯Linux Supervisor进程管理器
supervisor就是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台运行进程,并监控进程状态,异常退出时能自动重启。
Supervisord将通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,并且在程序以外中止后,迅速自动重新启动它们,不用在自己编写脚本来监控程序是否正常运行,非常方便。
Supervisord可以很方便的获取进程运行状态,启动、停止、重启一个或多个进程,对于不熟悉shell命令的用户来说是非常方便简单易用的工具。Supervisor已经存在了很多年了,是一个非常成熟稳定的进程管理工具。
Supervisord的安装部署,进程的创建管理对于一般用户来说还是有些麻烦和不易的。用户只想要一个在程序异常终止后自动重启程序的工具,或配置开机自启程序,并不想明白配置文件参数是什么意思,怎么配置等,毕竟不是搞这方面的。Supervisord的web管理工具又非常的简陋,只能控制并不能创建进程,还是需要手动创建配置文件。
旗鱼云梯根据用户的需求开发了基于supervisord管理器的web管理工具,非常方便使用,非常适合一般用户。

下面我们创建一个进程来试一下
1.创建一个python程序,每秒打印一次当前时间

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

b)运行目录就是 test.py脚本所在目录
c)启动命令就是在命令行中运行test.py脚本时执行的命令,在这里要加一个 -u参数,因为print输出是有缓冲区的,无法立即输出,直到缓冲区满,-u参数表示无缓冲区,立即输出。
3.创建成功,可以看到进程id,运行状态,运行时间,日志目录,并且能重启,停止,删除进程等操作。

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


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