建立主题网站的知识点,中山哪家做网站的好,四川省建设工程质量安全监督总站网站,重庆公司网站 技术支持参考文章#xff1a;
Supervisor使用详解
Supervisor 是一个用 Python 编写的客户端/服务器系统#xff0c;它允许用户在类 UNIX 操作系统#xff08;如 Linux#xff09;上监控和控制进程。Supervisor 并不是一个分布式调度框架#xff0c;而是一个进程管理工具#x…参考文章
Supervisor使用详解
Supervisor 是一个用 Python 编写的客户端/服务器系统它允许用户在类 UNIX 操作系统如 Linux上监控和控制进程。Supervisor 并不是一个分布式调度框架而是一个进程管理工具它可以用来启动、停止和重启程序并且可以自动重启崩溃的程序确保它们保持运行状态。
以下是 Supervisor 的一些主要特点
进程管理Supervisor 可以管理多个子进程确保它们按照配置文件中指定的方式运行。自动重启如果被监控的进程异常退出Supervisor 可以根据设定的策略自动重启这些进程。日志管理它能够收集子进程的标准输出和标准错误流并将它们写入日志文件中方便调试和故障排查。远程控制通过 XML-RPC 接口你可以从远程机器上与 Supervisor 进行交互执行命令或获取状态信息。Web 界面提供了一个简单的 Web 界面用于查看所有受管进程的状态以及进行基本的操作如启动、停止或重启。事件监听支持事件监听机制可以对特定事件作出反应比如进程启动、退出等。
安装和使用
安装 Supervisor 通常可以通过包管理器完成:
# Debian 或 Ubuntu 上可以使用 apt-get
sudo apt-get install supervisor
# Centos
yum install supervisor
安装完成后你需要编辑配置文件来定义哪些程序应该由 Supervisor 管理。配置文件一般位于 /etc/supervisor/conf.d/ 目录下。每个要管理的程序都有自己的 .conf 文件。
一个典型的配置文件可能看起来像这样
# 样例
[program:myapp]
command/path/to/myapp ; 启动命令
autostarttrue ; 在 supervisord 启动时自动启动此程序
autorestarttrue ; 当程序退出时自动重启
stderr_logfile/var/log/myapp.err.log ; 错误日志路径
stdout_logfile/var/log/myapp.out.log ; 标准输出日志路径
userroot ; 使用哪个用户权限运行程序# 正式配置
[program:test]
command/root/miniconda3/envs/abr/bin/python /home/kes/test.py
autostarttrue
autorestarttrue
stderr_logfile/home/kes/test.err.log
stdout_logfile/home/kes/test.out.log
userroot
保存配置文件后需要更新 Supervisor 的配置并重新加载
sudo supervisorctl reread
sudo supervisorctl update
之后就可以使用 supervisorctl 命令行工具来管理应用程序了例如启动、停止或重启服务。Supervisor 是一种非常有用的技术特别是对于那些需要长时间运行的服务型应用它可以确保即使是在非预期的情况下也能让这些服务持续可用。
# 设置开机自启
systemctl enable supervisord# 取消开机自启
systemctl disable supervisord# 检查是否开机自启
systemctl is-enabled supervisord# 立即启动 supervisord
systemctl start supervisord# 检查状态
systemctl status supervisord# 停止服务
systemctl stop supervisord# 重新加载服务配置
systemctl reload supervisord#进入子任务配置文件目录
cd /etc/supervisor/conf.d#创建子任务配置文件
touch test.ini#编辑配置文件
vi test.ini重新读取配置文件并应用更改
方式一
supervisorctl reload重新读取配置文件
supervisorctl update更新运行中的程序以反映配置文件中的更改
supervisorctl start test启动test程序
supervisorctl status test检查程序的状态以确保它已经成功启动
方式二
systemctl restart supervisord停止并再次启动supervisord服务其他命令
supervisorctl stop test停止特定服务
supervisorctl stop all停止所有服务(base) [rootVM-16-6-centos ~]# systemctl status supervisord
● supervisord.service - Process Monitoring and Control DaemonLoaded: loaded (/usr/lib/systemd/system/supervisord.service; enabled; vendor preset: disabled)Active: active (running) since Sat 2024-12-14 23:06:15 CST; 1h 19min agoProcess: 4696 ExecStart/usr/bin/supervisord -c /etc/supervisord.conf (codeexited, status0/SUCCESS)Main PID: 4699 (supervisord)Tasks: 5Memory: 395.1MCGroup: /system.slice/supervisord.service├─ 4699 /usr/bin/python /usr/bin/supervisord -c /etc/supervisord.conf├─24036 /root/miniconda3/envs/abr/bin/python /home/kes/test.py├─24118 /root/miniconda3/envs/abr/bin/python -c from multiprocessing.resource_tracker import ...└─24119 /root/miniconda3/envs/abr/bin/python -c from multiprocessing.spawn import spawn_main;...Dec 14 23:06:15 VM-16-6-centos systemd[1]: Stopped Process Monitoring and Control Daemon.
Dec 14 23:06:15 VM-16-6-centos systemd[1]: Starting Process Monitoring and Control Daemon...
Dec 14 23:06:15 VM-16-6-centos systemd[1]: Started Process Monitoring and Control Daemon.
根据提供的 systemctl status supervisord 输出可以总结出以下信息
Supervisord 服务状态 Loaded: 表明 supervisord.service 的单元文件已经被正确加载并且它位于 /usr/lib/systemd/system/supervisord.service。该服务被设置为开机启动enabled但默认情况下供应商预设是禁用的vendor preset: disabled。 Active (running): 这表示 supervisord 服务当前正在运行自 2024 年 12 月 14 日 23:06:15 CST 开始已经持续运行了大约 1 小时 19 分钟。 Process: 显示了启动 supervisord 服务的命令以及它的退出状态码codeexited, status0/SUCCESS意味着启动过程成功完成。 Main PID: 主进程 ID 是 4699对应于运行中的 supervisord 守护进程。 Tasks: 当前由 supervisord 管理的任务数量为 5 个。 Memory: 服务占用的内存总量为 395.1 MB。 CGroup: 列出了属于 supervisord 服务控制组的所有子进程。从输出中可以看到 PID 4699 是主 supervisord 进程。PID 24036 是您的 Python 脚本 /home/kes/test.py它正在使用 Miniconda 环境中的 Python 解释器。PIDs 24118 和 24119 看起来像是与 Python 的多处理模块相关的辅助进程用于资源跟踪和进程生成。 日志条目: 最后几行显示了 systemd 日志记录了 supervisord 服务的停止、启动和再次启动的时间戳。