首页 > 自考资讯 > 自考知识

守护进程运行,守护进程未运行怎么办

头条共创 2024-07-05

什么是supervisor

Supervisor是一套用Python开发的流行进程管理程序。将常规命令行进程转换为后台守护进程,监视进程的状态,并在异常终止时自动重新启动它。

主管使用fork/exec 将托管进程作为主管的子进程启动。这样,只需要在supervisor的配置文件中写入被管理进程的可执行文件的路径即可。

监督者知道,当子进程挂起时,父进程可以获得挂起子进程的准确信息,并可以选择是否唤醒并报警自己。

Supervisor 还提供为supervisord 或每个子进程设置非root 用户的功能。该用户可以管理相应的进程。

27a88e7c-2347-48cc-bcfc-9a5285f18fe1~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720781641&x-signature=NrZMQOH3t4FXh%2By%2BXVypt4bBCao%3D

安装

通过epel-release 安装的CentOS

安装yum -y epel-release

yum -y 安装主管

安装Ubuntu/Debian/Deepin

适当更新

apt -y 安装主管

通过pip 安装

pip安装主管

1f509ed3-9b7d-4b89-a4d8-ef8facd7f8cd~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720781641&x-signature=MI5UmkSyCpHqgzsSG77ypZB%2FdPs%3D

配置

supervisord.conf供supervisord和supervisorctl读取和使用。您可以使用echo_supervisord_conf 生成默认配置文件。

如果启动任一应用程序时未指定-c 选项(该选项用于显式告知应用程序配置文件的名称),应用程序将按照以下位置中指定的顺序调用supervisord.conf:查找名为的文件。使用找到的第一个文件。

./supervisord.conf

./etc/supervisord.conf

/etc/supervisord.conf

/etc/supervisor/supervisord.conf(Supervisor 3.3.0 及更高版本)

./etc/supervisord.conf(与可执行文件相关)

./supervisord.conf(与可执行文件相关)

生成配置文件。

echo_supervisord_conf /etc/supervisord.conf

[unix_http_server] 设置

[unix_http_服务器]

文件=/tmp/supervisor.sock;

;chmod=0700 ;套接字权限(默认0700)

;chown=nobody:nogroup ;套接字用户组

;username=user ; 验证用户(默认为无)

;password=123 ; 确认密码(默认无)

[inet_http_server] 设置

提供用于处理任务的http服务页面

;[inet_http_服务器]

;port=127.0.0.1:9001 ; ip_address: 端口说明符,*所有iface 的: 端口

;username=user ; 默认没有用户名(开放服务器)

;password=123 ; 默认无密码(开放服务器)

[主管]设置

Supervisord相关配置。这是最重要的进程配置。如果您使用的是Docker 容器,通常会更改配置文件nodaemon=true 以确保容器生存,并且不要使用daemon 模式来运行程序。

【监督】

logfile=/tmp/supervisord.log;默认$CWD/supervisord.log

logfile_maxbytes=50MB; 主日志文件b4轮换的最大字节数;

logfile_backups=10 ; 主日志文件备份数量0 表示无,默认为10。

loglevel=信息;其他:调试、警告、跟踪信息;

pidfile=/tmp/supervisord.pid; 默认的supervisord.pid

nodaemon=false; 如果为true,则在前台启动。

minfds=1024; 默认启动文件描述符是1024。

minprocs=200;默认为200。

;umask=022 ; 进程文件创建的默认值022

;user=chrism ; 默认为当前用户,root 需要

;identifier=Supervisor ; 主管标识符,默认为“主管”。

;directory=/tmp ; 默认情况下启动时不执行cd。

;nocleanup=true ; 启动时不清理临时文件。

;childlogdir=/tmp ; 'AUTO' 子日志目录,默认为$TEMP

;environment=KEY='value' ; 添加到环境中的键值对

;strip_ansi=false ; 删除日志中的ansi 转义码。

1b446604-5d94-4d5d-a20c-0bbdc5abe753~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720781641&x-signature=z96VjtbQ9b3wjmXTSFhsibr5e9s%3D

[include] 设置

包含的设置允许您管理多个文件中的不同程序。此设置允许您列出多个文件(用空格或换行符分隔)。还可以包含通配符。文件名是相对于该文件解释的。包含文件* 不能包含文件本身。

;[包括]

;文件=相对/目录/*.ini

[program:x] 设置

定义守护进程的相关设置为:如果您有多个程序,只需设置多个配置部分即可。

;项目名

【程序:博客】

;脚本执行命令

命令=/usr/bin/python /opt/bin/test.py

; 是否与supervisor启动同时启动,默认为True

自动启动=真

; 当程序退出时,不会自动重新启动。可以使用三个选项来配置子进程挂起后自动重新启动:false、unexpected 和true。如果为false,则在任何情况下都不会重新启动。如果设置为true,则只要进程终止就会重新启动。

自动重启=假

; 该选项是自子进程启动以来的秒数。如果此时状态为Running,则认为启动成功。默认值为1

开始秒=1

; 该选项是启动失败后重试的次数。

启动尝试次数=3

;日志输出

stderr_logfile=/tmp/blog_stderr.log

stdout_logfile=/tmp/blog_stdout.log

运行脚本的用户

用户=欧凯

; 将stderr 重定向到stdout,默认为false

重定向标准错误=true

;stdout日志文件大小,默认50MB

stdout_logfile_maxbytes=20M

;stdout 日志文件备份号

stdout_logfile_backups=20

4b69b980-1851-4e75-99e1-8dff92ef0900~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720781641&x-signature=BqugS5HZ%2FxWMNZRNIg0mDDqLI%2Bg%3D

启动

系统安装的软件包通常都有相应的服务文件,可以在这里手动启动。

Supervisord -c /etc/supervisord.conf

任务控制

supervisorctl-c/etc/supervisord.conf

主管帮助

默认命令(帮助主题和输入):

=====================================

添加结束打开重新加载重新启动开始结束

删除avail fg pid关闭状态更新

清除主尾结束重载信号停止版本

以上是命令行支持的命令

版权声明:本文由今日头条转载,如有侵犯您的版权,请联系本站编辑删除。

猜你喜欢