概述
Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。
它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去即可。
也实现当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,可以选择是否自己启动和报警。supervisor还提供了一个功能,可以为supervisord或者每个子进程,设置一个非root的user,这个user就可以管理它对应的进程。
场景
- Linux下如何让程序后台运行?
- 关掉终端继续让程序运行的方法?
- Linux ssh状态下如何后台运行程序?
优势对比
- 相对于nohup:nohup只是简单地让命令在后台运行,即使终端关闭也能继续。但是它缺乏自动重启功能,也不容易监控进程状态。而 Supervisor 可以自动重启崩溃的进程,并且可以通过supervisorctl方便地查看状态。
- 相对于setsid:setsid也是用于让进程在新的会话中运行,但它在进程管理的便捷性上不如 Supervisor。例如,Supervisor 可以集中管理多个进程,方便地同时启动和停止多个进程,而setsid主要关注单个进程的会话分离。
- 相对于screen:screen可以让进程在一个虚拟终端中运行,即使退出终端也能保持运行。但是它主要侧重于终端会话管理,不像 Supervisor 那样专注于进程的自动管理和监控,如自动重启、日志管理等功能。
安装
Step1 更新依赖库
Step2 安装 supervisor
默认情况下,Supervisor 包在 Ubuntu 20.04 默认存储库中可用。您可以使用以下命令安装它:
安装 Supervisor 后,您可以使用以下命令验证已安装的 Supervisor 版本:
接下来,使用以下命令验证 Supervisor 服务的状态:
Step3 启用 Supervisor Web 界面
Supervisor 提供了一个基于 Web 的界面来管理所有进程,但默认情况下它是禁用的。您可以通过编辑文件 /etc/supervisor/supervisord.conf 来启用它。
添加以下几行:
保存并关闭文件,然后重新启动 Supervisor 服务以应用更改:
Step4 使用Supervisor管理 redis队列进程
您需要为要管理的每个服务创建一个独立的配置文件。您可以使用以下命令创建 think-redis-queue 配置文件:
添加以下几行:
完成后保存并关闭文件。接下来,告诉主管了解新配置:
你应该得到以下输出:
接下来,告诉 Supervisor 启动 think-redis-queue 服务:
你应该得到以下输出:
接下来,使用以下命令验证 Supervisor 是否启动了 think-redis-queue服务:
你应该得到以下输出:
如果要停止 think-redis-queue 服务,请运行以下命令:
Step5 访问 Supervisor Web 界面
图片
Nginx配置
常用命令
CentOS发行版
安装
配置文件
子配置目录
编写配置 redis-queue-order-consumer.ini
supservisorctl 命令
查看服务
停止某个服务
停止所有服务