最近服务器redis服务莫名其妙挂了两次,每次都要人工重启,无奈只能上进程守护,本来打算用shell脚本来操作的,但是经过搜索发现supervisor也很强大,所以就直接安装了。

在配置的过程中遇到了FATAL Exited too quickly (process log may have details) 的错误,经过测试完美解决。

一、Supervisor安装过程

Supervisor是基于python开发的,安装Supervisor前,需要先安装python,Supervisor可以通过pip或者easy_install安装。

通过easy_install安装

或者,通过pip安装

具体可参看官方文档http://supervisord.org/installing.html

二、supervisor的使用

安装完执行以下命令:

随后我们对生成的配置文件进行编辑,主要修改最后两行,我这里修改为:

根据修改的内容,我们创建supervisord.d目录,然后在目录下创建需要监控的配置文件,这里以redis为例,创建redis.ini内容如下:

启动supervisor,启动命令有多种,可以自行尝试,我这里使用的是:

启动后我们运行:

得到如下:

表示启动成功,我们尝试使用 kill -9 5318结束redis进程后,在执行ps -ef |grep redis会发现服务已经自动重启,至此supervisor进程守护配置完毕。

三、一些错误记录

这次在配置redis守护的时候遇到了FATAL Exited too quickly (process log may have details) 错误,经过查找一些资料发现问题出在了配置文件程序启动一行,我最初写的是service redis start,这个命令写入运行supervisor后虽然redis启动起来了,按时监控结果报FATAL Exited too quickly (process log may have details) 错误,原因是Supervisor 监控的是这个 service 命令……这个命令是启动 redis的,然后启动完了这个 service 就结束了,所以 supervisor 就拼了命的给你启动……然后这个命令确实会很快退出……

然后改成 command=/www/server/redis/src/redis-server /www/server/redis/redis.conf  完美解决问题。