Supervisor如何进行高效配置与复杂任务管理?

2026-03-30 14:261阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计919个文字,预计阅读时间需要4分钟。

Supervisor如何进行高效配置与复杂任务管理?

Supervisor简介及使用:

Supervisor是一款基于Python开发的通用进程管理程序,可以将普通命令行进程转为后台守护进程。官网:http://supervisord.org,源码位置:https://github.com/Supervisor/supervisor

Supervisor使用方法:

1. 安装Supervisor

2.配置进程文件

3.启动Supervisor

4.添加进程到Supervisor管理

5.查看进程状态

6.停止、启动或重启进程

Supervisor的简单使用

介绍

官网:supervisord.org,源码位置:github.com/Supervisor/supervisor Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。 它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去即可。也实现当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,可以选择是否自己启动和报警。supervisor还提供了一个功能,可以为supervisord或者每个子进程,设置一个非root的user,这个user就可以管理它对应的进程。

Supervisor4大组件

  • supervisord

主进程,负责管理进程的server,它会根据配置文件创建指定数量的应用程序的子进程,管理子进程的整个生命周期,对crash的进程重启,对进程变化发送事件通知等。同时内置web server和XML-RPC Interface,轻松实现进程管理。。该服务的配置文件在/etc/supervisor/supervisord.conf。

  • supervisorctl

客户端的命令行工具,提供一个类似shell的操作接口,通过它你可以连接到不同的supervisord进程上来管理它们各自的子程序,命令通过UNIX socket或者TCP来和服务通讯。用户通过命令行发送消息给supervisord,可以查看进程状态,加载配置文件,启停进程,查看进程标准输出和错误输出,远程操作等。服务端也可以要求客户端提供身份验证之后才能进行操作。

Supervisor如何进行高效配置与复杂任务管理?

  • Web Server

superviosr提供了web server功能,可通过web控制进程(需要设置[inetip:9001,输入上面我们设置的用户名:user1,密码:123456后,如图所示

/etc/supervisord.d目录,在此目录创建名称为:你的项目服务名.ini的ini文件,内容如下:

#表示程序名称,用于在supervisor中显示,无特殊意义。 [program:core50test] # 输入执行命令,这里表示执行的是dotnet Core50Test.dll command=/bin/bash -c "dotnet Core50Test.dll" # 应用程序根目录 directory=/root/app_data/core50test/publish # 是否自动启动,当 supervisor 加载该配置文件的时候立即启动它 autostart=true # 是否自动重启, 程序异常退出后自动重启 autorestart=true # 该配置文件输出单个日志文件的大小,默认50M logfile_maxbytes=50MB # 日志备份个数 logfile_backups=10 # 记录日志级别 loglevel=info # 指定标准输出日志文件 stdout_logfile=/root/app_data/data/logs/core50test/core50test.out.log # 环境变量 environment=ASPNETCORE_ENVIRONMENT=Production # 启动服务的用户 user=root # 把stderr重定向到stdout,默认 false redirect_stderr=true

注意:stdout_logfile指向的文件夹一定要先创建,否则无法启动,上述配置文件中的内容需要根据用户实际情况修改,如我当前登录的用户是:yonghu,你们是其他的就做相应的修改即可。 然后执行如下命令来重新加载配置:

supervisorctl reload

再次访问之前的web页面,可以看到启动成功了。

问题:

sudo supervisorctl reload 但是在centos上使用这个命令会报错 error: <class 'socket.error'>, [Errno 2] No such file or directory: file: /usr/lib64/python2.7/socket.py line: 224 解决办法:supervisord -c /etc/supervisord.conf来启动

本文共计919个文字,预计阅读时间需要4分钟。

Supervisor如何进行高效配置与复杂任务管理?

Supervisor简介及使用:

Supervisor是一款基于Python开发的通用进程管理程序,可以将普通命令行进程转为后台守护进程。官网:http://supervisord.org,源码位置:https://github.com/Supervisor/supervisor

Supervisor使用方法:

1. 安装Supervisor

2.配置进程文件

3.启动Supervisor

4.添加进程到Supervisor管理

5.查看进程状态

6.停止、启动或重启进程

Supervisor的简单使用

介绍

官网:supervisord.org,源码位置:github.com/Supervisor/supervisor Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。 它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去即可。也实现当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,可以选择是否自己启动和报警。supervisor还提供了一个功能,可以为supervisord或者每个子进程,设置一个非root的user,这个user就可以管理它对应的进程。

Supervisor4大组件

  • supervisord

主进程,负责管理进程的server,它会根据配置文件创建指定数量的应用程序的子进程,管理子进程的整个生命周期,对crash的进程重启,对进程变化发送事件通知等。同时内置web server和XML-RPC Interface,轻松实现进程管理。。该服务的配置文件在/etc/supervisor/supervisord.conf。

  • supervisorctl

客户端的命令行工具,提供一个类似shell的操作接口,通过它你可以连接到不同的supervisord进程上来管理它们各自的子程序,命令通过UNIX socket或者TCP来和服务通讯。用户通过命令行发送消息给supervisord,可以查看进程状态,加载配置文件,启停进程,查看进程标准输出和错误输出,远程操作等。服务端也可以要求客户端提供身份验证之后才能进行操作。

Supervisor如何进行高效配置与复杂任务管理?

  • Web Server

superviosr提供了web server功能,可通过web控制进程(需要设置[inetip:9001,输入上面我们设置的用户名:user1,密码:123456后,如图所示

/etc/supervisord.d目录,在此目录创建名称为:你的项目服务名.ini的ini文件,内容如下:

#表示程序名称,用于在supervisor中显示,无特殊意义。 [program:core50test] # 输入执行命令,这里表示执行的是dotnet Core50Test.dll command=/bin/bash -c "dotnet Core50Test.dll" # 应用程序根目录 directory=/root/app_data/core50test/publish # 是否自动启动,当 supervisor 加载该配置文件的时候立即启动它 autostart=true # 是否自动重启, 程序异常退出后自动重启 autorestart=true # 该配置文件输出单个日志文件的大小,默认50M logfile_maxbytes=50MB # 日志备份个数 logfile_backups=10 # 记录日志级别 loglevel=info # 指定标准输出日志文件 stdout_logfile=/root/app_data/data/logs/core50test/core50test.out.log # 环境变量 environment=ASPNETCORE_ENVIRONMENT=Production # 启动服务的用户 user=root # 把stderr重定向到stdout,默认 false redirect_stderr=true

注意:stdout_logfile指向的文件夹一定要先创建,否则无法启动,上述配置文件中的内容需要根据用户实际情况修改,如我当前登录的用户是:yonghu,你们是其他的就做相应的修改即可。 然后执行如下命令来重新加载配置:

supervisorctl reload

再次访问之前的web页面,可以看到启动成功了。

问题:

sudo supervisorctl reload 但是在centos上使用这个命令会报错 error: <class 'socket.error'>, [Errno 2] No such file or directory: file: /usr/lib64/python2.7/socket.py line: 224 解决办法:supervisord -c /etc/supervisord.conf来启动