大道至简,知易行难
广阔天地,大有作为

Ubuntu 18.04中使用Supervisor

官网定义:

Supervisor: A Process Control System

Supervisor is a client/server system that allows its users to monitor and control a number of processes on UNIX-like operating systems.

Supervisor是类Unix系统下的一个进程管理工具,用于监控和控制多个进程。当用Supervisor管理的进程意外被杀死时,Supervisor会自动将其重新拉起。Supervisor使用Python开发,在Ubuntu环境下直接安装即可:

Ubuntu 18.04安装Supervisor

Ubuntu 18.04安装Supervisor

Supervisor安装完成后会主要有三个重要的可执行文件:

  • supervisord:守护进程,Supervisor的服务端;
  • supervisorctl:Supervisor的客户端,用于管理我们委托给Supervisor管理的进程;
  • echo_supervisord_conf:生成配置文件;
Supervisor的组件

Supervisor的组件

按照官网提示:

Supervisor官方有关生成配置文件的描述

Supervisor官方有关生成配置文件的描述

生成配置文件。显然,Ubuntu下面已经建好了配置文件;不过,这个配置文件比echo_supervisord_conf返回的全量配置文件简单得多。具体的配置选项可以去官网查看:

Ubuntu 18.04使用apt-get安装Supervisor时自动生成了配置文件

Ubuntu 18.04使用apt-get安装Supervisor时自动生成了配置文件

实际上,除了配置文件外,开启自启动的配置文件也已经建好了:

Ubuntu 18.04使用apt-get安装Supervisor时自动生成了开机自启动的配置文件

Ubuntu 18.04使用apt-get安装Supervisor时自动生成了开机自启动的配置文件

我们可以看到在/etc/supervisor/supervisord.conf配置文件的最后包含了名为/etc/supervisor/conf.d/*.conf的配置文件。根据官网的介绍,在其中增加program相关的配置即可:

Supervisor的program配置

Supervisor的program配置

根据示例配置文件中的描述:

我们新建一个:

Supervisor实例

Supervisor实例

如果Supervisor已经启动,那么可以使用:

否则可以使用:

启动Supervisor。使用Supervisor管理的进程启动后,除非通过Supervisor主动停止,否则其他任何主动退出(如Tomcat的shutdown.sh)或者kill命令都会导致进程重启。因此,我们会使用supervisorctl进行操作,常见的命令包括:

值得注意的是,Supervisor还支持处理一组进程,不过现在没用到。

Supervisor管理进程状态转换(http://supervisord.org/subprocess.html#process-states):

Supervisor管理进程状态转换

Supervisor管理进程状态转换

其中:

  • running:进程处于运行状态
  • starting:Supervisor收到启动请求后,进程处于正在启动过程中
  • stopped:进程处于关闭状态
  • stopping:Supervisor收到关闭请求后,进程处于正在关闭过程中
  • backoff:进程进入starting状态后,由于马上就退出导致没能进入running状态
  • fatal:进程没有正常启动
  • exited:进程从running状态退出

参考资料:
1、https://www.jianshu.com/p/68605ac9d06a
2、https://zhuanlan.zhihu.com/p/147305277

转载时请保留出处,违法转载追究到底:进城务工人员小梅 » Ubuntu 18.04中使用Supervisor

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址