supervisor的使用

对于脚本文件的运行,常常使用nohup的方式后台运行,这样在ctrl + c 或者当前终端退出的时候可以保证脚本不会停止, 但是并不能监控这个脚本的运行状态,也不能在这个程序异常退出后能自动重启。

supervisor 是用python开发的一套client/server服务, 是类Unix服务器下的服务监控工具(不能运行在windows平台下), 能方便的管理程序进程的启停和保证程序挂掉后自动重启。它是通过fork/exec方式把这些被管理的进程当做supervisor的子进程来启动的, 这样只要在配置文件中定义好要被管理的子进程项目的信息就可以保证这些项目被管理。superviror 目前支持python3.4及以上版本和python2.7版本运行。

安装

centos的可以用: 

ubuntu可以用:

python pip安装:

python easy_install 安装:

使用

1. 配置supervisor的管理器的配置文件(通常命名为supervisord.conf)

2. 配置被管理子进程项目的配置文件(通常为.ini后缀文件)

3. supervisord 命令启动supervisor

4. supervisorctl 命令管理子进程项目。

2.1、配置文件

supervisor本身的配置文件通常命名为supervisord.conf。它同时由supervisord和supervisorctl使用。如果在没有-c选项(用于显式告诉应用程序配置文件名的选项)的情况下启动supervisor,则supervisor将在以下位置中按指定顺序查找名为supervisord.conf的文件。将使用找到的第一个文件。

所以可以在以上提到的路径中来配置配置文件, 也可以通过 supervisord  -c 的方式来指定运行的时候使用的配置文件的位置。

用 yum或者apt 安装的默认会在/etc/目录下生成supervisord.conf 文件,如下:

如果/etc 目录下没有此文件也可以自己生成, 生成命令如下:

我把一些比较常用的supervisord.conf配置项来然后加了中文注释, 方便进行按需配置

子进程配置文件的常用的配置项如下我也加了注释:

2.2、实战练习

下面编写一个python文件当做要运行的子进程, 文件路径为/home/yz/supervisor_study/hello.py,文件hello.py 内容如下:

这个Python文件会持续输出 hello world 到子进程配置的日志里边。

查看当前路径然后配置supervisord.conf:

因为是练习项目所以我把配置文件和日志文件都放在了/home/yz/supervisor_study/logs 这个文件夹。

进入/etc 目录下看是否有supervisord.conf配置文件, 若没有此文件通过如下命令生成:echo_supervisord_conf >> supervisord.conf

修改 /etc/supervisord.conf 配置文件 主要修改内容如下:

2.2.1 配置生成日志的路径

我想让supervisor本身的日志文件生成到项目路径logs文件夹下, 路径为: 

所以修改/etc/supervisord.conf配置如下:

2.2.2 指定要被管理的项目的配置文件路径

默认被管理子进程的配置文件目录为/etc/supervisord.d 不修改则会去这个目录下找配置文件。同样我想把被管理项目的配置文件放到我的项目目录下, 所以对/etc/supervisord.conf 做了如下修改

/etc/supervisord.conf文件配置完成。

看下被管理子进程项目的配置文件如何写:一个子进程配置文件可以放一个或多个被管理的项目, 如果项目多的话可以一个配置文件放置一个管理项目, 这样便于管理。因为指定了被管理项目的配置文件的位置为/home/yz/supervisor_study目录下的.ini文件, 所以去这个目录下编写配置文件(hello.ini)内容如下:

配置完成 supervisord 命令启动项目

logs文件夹下会有三个文件:

hello.* 文件是被管理的子项目的日志文件。

supervisor.log 是supervisor的日志文件,保存的是supervisr启动时候的日志如下内容

然后看下被管理的子进程被kill后是否能重启

可以看到启动后 python脚本运行pid为22917, 然后我kill -9的方式杀死后再次查看python脚本还是在运行只是pid变了,supervisor保证了python脚本异常退出后的重启。 

2.3、常用命令

通过如上命令可以管理supervisor的启停, 以及被管理项目的启停, 配置的更新。

更多信息可以去官方文档查看http://www.supervisord.org/ 


快来留言板交流吧

据说可以发图片(表情包安排上了嘛)


往期精彩回顾

2019年度精选文章

360技术中台招聘啦!!

为什么我们要从MySQL迁移到TiDB?


360技术公众号

技术干货|一手资讯|精彩活动

扫码关注我们

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Supervisor是一个用于管理和监控进程的工具,可以确保进程始终处于运行状态。以下是使用Supervisor的基本教程: 1. 安装Supervisor:首先,你需要在你的系统中安装Supervisor。具体安装步骤因操作系统而异。你可以通过包管理器(如apt、yum或brew)来安装Supervisor。 2. 配置SupervisorSupervisor的配置文件位于/etc/supervisor/supervisord.conf。你可以通过编辑此文件来配置需要监控的进程。 3. 添加进程配置:在配置文件中,你可以为每个要监控的进程添加一个节(section)。以下是一个示例: ``` [program:myprocess] command=/path/to/your/process directory=/path/to/working/directory autostart=true autorestart=true user=user_name ``` 在上面的示例中,你需要将`/path/to/your/process`替换为要监控的进程的实际路径。`directory`是进程运行时的工作目录。`autostart`和`autorestart`选项用于定义进程自动启动和自动重启的行为。`user`选项指定以哪个用户身份运行该进程。 4. 保存并重启Supervisor:保存Supervisor配置文件后,重新启动Supervisor以使更改生效。可以使用以下命令重启Supervisor: ``` sudo service supervisor restart ``` 5. 管理进程:一旦Supervisor启动,它将开始监控配置文件中指定的进程。你可以使用以下命令管理进程(以示例中的myprocess为例): ``` sudo supervisorctl start myprocess # 启动进程 sudo supervisorctl stop myprocess # 停止进程 sudo supervisorctl restart myprocess # 重启进程 ``` 这是一个Supervisor的基本教程,希望能对你有所帮助。如需了解更多信息,可以参考Supervisor的官方文档或其他相关资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值