目录
前言
Supervisor是一款开源的进程管理工具,可以用于管理Python、 shell、 C等程序。它可以实现进程的自动启动、重启、监控等功能,并可以方便地实现进程的异步启动和自动化管理。
背景
经常碰到要跑一些守护进程。平常我的做法是开一个 tmux 软件或者 screen,然后启动软件。如果有其他人问,我则会建议用
nohup your-program &>nohup.log &
这种方式。
可是这种做法毕竟不是长久之计,机器重启或者不小心 kill 了某个进程,后台运行的这个进程可能就不小心死掉了。
后来开源界的大牛建议我用 supervisor。尝试之后,简直是如获至宝。作为一个存在了长达 10 年多的进程管理软件,他已经相当成熟。到如今我用这个软件已经超过 1 年了,希望借这篇文章给大家普及下这个超赞的软件。
Supervisor 是一个客户端服务器系统,包含有两个程序
- Supervisor 的 server 部分称为 supervisord。主要负责管理子进程,响应客户端的命令,log 子进程的输出,创建和处理不同的事件
- Supervisor 的命令行客户端 supervisorctl。它可以与不同的 supervisord 进程进行通信,获取子进程信息,管理子进程
supervisor 的官网地址是 Supervisor: A Process Control System — Supervisor 4.2.5 documentation 我的大部分资料也是来自这里。
优点
相比较传统的方式,supervisor 用很多好处
简单
通常管理 linux 进程的时候,一般来说都需要自己编写一个能够实现进程 start/stop/restart/reload 功能的脚本,然后丢到/etc/init.d/下面。这么做有很多不好的地方,第一我们要编写这个脚本,这就很耗时耗力了。第二,当这个进程挂掉的时候,linux 不会自动重启它的,想要自动重启的话,我们还要自己写一个监控重启脚本。而,supervisor 则可以完美的解决这些问题。
进程组
supervisor 可以对进程组统一管理,也就是说咱们可以把需要管理的进程写到一个组里面,然后我们把这个组作为一个对象进行管理&