Linux Supervisor进程控制系统完全教程

本文详细介绍了Supervisor进程控制系统,它可监视和控制类Unix操作系统进程,具有简单、集中管理等特性。文中涵盖其安装方法、运行命令、组件功能,还对配置文件各部分及子进程状态进行说明,同时提及日志管理和官方文档等内容。

一、简介

Supervisor是一个进程控制系统,它使用户能够监视和控制类unix操作系统进程。它通过提供基于配置或事件启动、停止和重新启动进程的机制,帮助管理应该在系统中连续运行的进程。对于需要控制和监视Linux或其他类unix操作系统上多个进程的状态的开发人员和系统管理员来说,Supervisor特别有用。

监督程序通常作为后台守护进程运行,并充当负责管理多个进程的集中实体。它可用于管理各种类型的进程,例如web服务器、数据库服务器、任务队列和自定义应用程序。

在UNIX上,通常很难获得进程的准确的上/下状态。Pidfiles经常说谎。Supervisord将进程作为子进程启动,因此它总是知道其子进程的真正up/down状态,并且可以方便地查询这些数据。

Supervisor特性:

  • 简单:Supervisor是通过一个简单的ini风格的配置文件来配置的,它很容易学习。它提供了许多每个进程的选项,如重新启动失败的进程和自动日志轮换。

  • 集中管理:Supervisor提供了一个启动、停止和监视进程的位置。进程可以单独控制,也可以分组控制。也可以配置Supervisor提供本地或远程命令行和web界面。

  • 高效:Supervisor通过fork/exec启动它的子进程,子进程不被daemon化。当进程终止时,操作系统会立即向Supervisor发送信号,不像某些解决方案依赖麻烦的PID文件和定期轮询来重新启动失败的进程。

  • 可扩展性:Supervisor有一个简单的事件通知协议,用任何语言编写的程序都可以用它来监视它,还有一个用于控制的XML-RPC接口。它还使用扩展点构建,Python开发人员可以利用这些扩展点。

  • 兼容性:除了Windows, Supervisor几乎可以在所有设备上工作。它在Linux、Mac OS X、Solaris和FreeBSD上进行了测试和支持。它完全用Python编写,因此安装不需要C编译器。

Supervisor的主要功能包括:

  • 进程控制:Supervisor可以启动、停止和重新启动进程。它确保指定的进程正在运行,如果它们意外崩溃或终止,它可以自动重新启动它们。

  • 监视:Supervisor不断地监视被管理流程的状态。它可以跟踪进程是否正在运行、是否已退出或是否遇到任何错误。这种监视功能允许Supervisor根据进程状态采取适当的操作。

  • 日志记录和输出捕获:Supervisor捕获子进程的标准输出和标注错误流。这样就可以存储和分析日志,帮助进行故障排除和调试。

  • 配置管理:Supervisor通常提供配置文件或配置管理系统来定义要管理的进程、启动参数和其他相关设置。这允许从一个中心位置轻松地管理和配置多个进程。

  • Web界面和命令行:Supervisor提供基于web的用户界面和命令行界面,用于管理和监控进程。

  • 分组:它允许对可以一起控制的进程进行分组,这在管理包含多个部分的微服务或应用程序时非常有用。

  • 事件通知:当被管理进程的状态发生变化时,Supervisor可以发出事件,这些事件可用于与其他监视或警报系统集成。

Supervisor组件

  • supervisord:Supervisor的服务器部分被命名为supervisord。它负责在自己的调用时启动子程序,响应来自客户端的命令,重新启动崩溃或退出的子进程,记录其子进程的标准输出和标准错误输出,以及生成和处理与子进程生命周期中的的“事件”。

服务器进程使用配置文件。它通常位于/etc/supervisord.conf文件中。这个配置文件是一个“Windows-INI”风格的配置文件。通过适当的文件系统权限来保证这个文件的安全是很重要的,因为它可能包含未加密的用户名和密码。

  • supervisorctl:Supervisor的命令行客户端部分命名为supervisorctl。它为supervisord提供的特性提供了一个类似shell的接口。通过supervisorctl,用户可以连接到不同的supervisord进程(一次一个),获取被控制的子进程的状态,停止和启动子进程,以及获取正在运行的supervisord进程的列表。

  • Web Server:启用internet socket,则可以通过浏览器访问Web用户界面。启用配置文件的[inet_http_server]部分后,访问服务器URL(例如http://localhost:9001/),通过web界面查看和控制进程状态。

  • XML-RPC Interface:提供web UI的同一个HTTP服务器同时提供了一个XML-RPC接口,该接口可用于查询和控制管理程序及其运行的程序。

二、安装方法

  • 通过pip安装
pip install supervisor
  • Linux Debian系
sudo apt-get install supervisor
  • Linux CentoOS系
sudo yum install -y supervisor
  • MacOS
brew install supervisor
  • Windows不支持

Supervisor的发布包的一个特点是,它们通常已经集成到发布的服务管理基础设施中,例如,允许在系统启动时自动启动Supervisor,一般都自动配置到了systemd服务中。

如果没有自动创建配置文件,则使用如下命令创建:

echo_supervisord_conf > /etc/supervisord.conf

echo_supervisord_conf 会打印supervisord的配置信息,然后写到/etc/supervisord.conf中

三、运行supervisord

supervisord

supervisord默认会作为守护进程来运行,运行的日志可以在supervisor.log中查看,也可以通过 -n 选项来指定supervisord在前台运行,一般用于查看debug信息。

supervisord的常用的命令行选项有:

  • -c [FILE], --configuration=[FILE]:指supervisord使用的配置文件。

  • -n, --nodaemon:在前台运行。

  • -s, --silent:静音模式,没有输出定向到标准输出。

  • -h, --help:打印帮助信息。

  • -d [PATH], --directory=[PATH]:当supervisord作为守护进程运行时,在守护进程之前切换到该目录。

  • -l FILE, --logfile=FILE:指定supervisord的日志文件路径。

  • -y BYTES, --logfile_maxbytes=BYTES:轮换发生前 Supervisord 活动日志文件的最大大小。该值是后缀相乘的,例如“1”是一个字节,“1MB”是 1 MB,“1GB”是 1 GB。

  • -z NUM, --logfile_backups=NUM:要保留的 Supervisord 活动日志的备份副本数量。每个日志文件的大小为 logfile_maxbytes。

  • -e LEVEL, --loglevel=LEVEL:日志记录级别,分别有:trace, debug, info, warn, error, critical。

  • -j FILE, --pidfile=FILE:Supervisord 应将其 pid 文件写入的文件名。

  • -i STRING, --identifier=STRING:此Supervisor实例的各种客户端 UI 公开的任意字符串标识符。

  • -a NUM, --minfds=NUM:在成功启动之前,supervisord 进程必须可用的文件描述符的最小数量。

  • -v, --version:打印版本号

  • --minprocs=NUM:在成功启动之前,supervisord 进程必须可用的操作系统进程槽的最小数量。

四、Supervisorctl

常用的命令行选项

  • -c, --c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值