>백엔드 개발 >파이썬 튜토리얼 >Python 프로세스 관리 도구 Supervisor를 이해하도록 안내합니다.

Python 프로세스 관리 도구 Supervisor를 이해하도록 안내합니다.

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB앞으로
2022-07-28 15:34:462550검색

이 기사에서는 Python에 대한 관련 지식을 제공합니다. Supervisor는 Python으로 개발된 프로세스 관리 시스템으로, 이를 통해 사용자는 Linux에서 프로세스를 모니터링하고 제어할 수 있으며 일반 명령줄 프로세스를 백그라운드 데몬 프로세스로 자동 전환할 수 있습니다. 비정상적으로 종료되면 다시 시작해보세요. 모두에게 도움이 되기를 바랍니다.

Python 프로세스 관리 도구 Supervisor를 이해하도록 안내합니다.

[관련 권장 사항: Python3 동영상 튜토리얼 ]

1. 소개

Supervisor는 Python으로 개발된 프로세스 관리 시스템으로, Linux에서 프로세스를 모니터링하고 제어할 수 있습니다. 실행 중인 프로세스는 백그라운드 데몬 프로세스가 되어 비정상적으로 종료되면 자동으로 다시 시작될 수 있습니다

2. 설치

Supervisor는 Linux 및 Mac을 지원하지만 Windows는 지원하지 않습니다
이 문서의 시스템은 centos, supervisor==4.2.4<code>centos,supervisor==4.2.4

pip3 install supervisor

安装完成后,在Python bin目录下面会有这样几个文件。

ls /usr/local/Python38/bin

echo_supervisord_conf
supervisorctl
supervisord

注:由于python bin目录是加入了环境变量,所以可以直接执行这几个文件。

三、创建配置文件

1.首先建个目录,存放配置文件:mkdir supervisord

echo_supervisord_conf > supervisord/supervisord.conf

若报错 -bash: /etc/supervisord.conf: Permission denied,需要切换到 root用户。

2.创建子进程配置文件路径

mkdir -p supervisor/conf.d

后面我们的任务,我们想把它作为守护进程,都需要一个配置文件,我们把这些配置文件放在conf.d目录下面。

3.修改配置文件

vim supervisord/supervisord.conf

将最后一部分改为

[inclue]
# 因为我这里是放在root用户目录下,也可以放其它目录
files=/root/supervisord/conf.d/*.conf

四、初试

1.启动 supervisord

supervisord -c supervisord/supervisord.conf

这样就把supervisord启动了,我们接下来可以把我们的任务交给他去守护了,停止了会帮我们自动重启。

查看版本

supervisord -v

2.编写简单的 Shell 脚本

vim supervisord/test.sh

内容如下

#!/bin/bash
while : 
do
    echo `date &#39;+%Y-%m-%d %H:%m:%S&#39;`
    sleep 1
done

简单运行,Ctrl + C 退出

3.创建子进程配置文件

vim supervisor/conf.d/test.conf

test.conf内容如下:

[program:test]
command=sh /root/supervisord/test.sh
priority=999                              ; 相对启动优先级,数值越小越优先,默认为999
autostart=true                            ; 在supervisor启动时自动启动,默认为true
autorestart=true                          ; 在意外退出时重新启动,默认为true
startsecs=10                              ; 子进程启动多少秒后状态为running则认为启动成功,默认为1
startretries=3                            ; 尝试启动的最大次数,默认为3
exitcodes=0,2                             ; 进程的预期退出代码列表,默认为0
stopsignal=QUIT                           ; 终止进程的信号,默认为TERM
stopwaitsecs=10                           ; 在SIGKILL之前等待的最大秒数,默认为10
user=root                                 ; 在某用户下设置uid来启动程序,默认不切换用户
redirect_stderr=true                      ; 是否重定向stdout和stderr,默认为false
stdout_logfile=/tmp/supervisor.stdout.log  ; stdout的输出文件,默认为AUTO
stdout_logfile_maxbytes=50MB              ; stdout最大文件大小,默认为50MB
stdout_logfile_backups=10                 ; stdout文件备份数,设为0则不备份,默认为10

其实只需要配置3个参数,其它不用管:

  • command=sh /root/supervisord/test.sh: 我们的子进程启动命令;
  • stdout_logfile=/tmp/supervisor.stdout.log: 日志;
  • program:test:进程名为test,如果进程哪一天想停止启动等,需要进程名;

目前文件目录结构是这样的:

yum install tree
tree supervisord

supervisord
├── conf.d
│   └── test.conf
├── supervisord.conf
└── test.sh

4.重新读取配置并更新子进程

因为我们的supervisord已经启动了,可以通过ps -ef | grep supervisord.conf查看。添加了子进程配置文件,需要把它重新加载进来:

先进入supervisord目录: cd supervisord,否则执行下面命令会有问题。

supervisorctl reread

再次查看进程状态

supervisorctl status

结果:

test     RUNNING   pid 30278, uptime 1:29:41

名为test的这个进程已经作为守护进程在后台运行,我们来kill掉他:

kill 30278

再执行supervisorctl status,会发现状态立马由starting,不一会变成running,那么supervisord

vim supervisord.conf

설치가 완료되면 Python bin 디렉토리 아래에 이와 같은 파일이 여러 개 있을 것입니다.

[inet_http_server]
port=*:9001                ; 此处改为*便于调试

참고: Python bin 디렉터리에는 환경 변수가 추가되어 있으므로 이러한 파일을 직접 실행할 수 있습니다.

3. 구성 파일을 생성합니다

1. 먼저 구성 파일을 저장할 디렉터리를 만듭니다: mkdirsupervisord.

supervisorctl reload

오류가 보고되는 경우 -bash: /etc/supervisord.conf: Permission failed, 루트 사용자로 전환해야 합니다.

2. 하위 프로세스 구성 파일 경로 생성

supervisorctl reread

다음 작업에서는 이를 데몬 프로세스로 사용하려면 구성 파일을 conf.d 디렉터리에 저장해야 합니다.

3. 구성 파일을 수정하세요

supervisorctl update

마지막 부분을

supervisorctl reload

4로 변경하세요. 초기 테스트

1.supervisord

supervisorctl status

를 시작합니다. 우리의 임무를 그분께 보호해 주시고, 중단되면 자동으로 다시 시작하실 것입니다.

버전 보기

supervisorctl status <name>

2. 간단한 쉘 스크립트 작성

supervisorctl start all

내용은 다음과 같습니다

supervisorctl start <name>

간단히 실행하여 Ctrl + C하여 종료

3.

supervisorctl restart all

test.conf에는 다음 내용이 포함되어 있습니다.

supervisorctl restart <name>

실제로 3개의 매개변수만 구성하면 되며 나머지 매개변수는 걱정할 필요가 없습니다.

  • command=sh /root/supervisord/test.sh: 하위 프로세스 시작 명령;
  • stdout_logfile=/tmp/supervisor.stdout.log: 로그;
  • program:test: 프로세스 이름은 test입니다. 프로세스가 언제든지 중지하고 시작하려는 경우 프로세스 이름입니다.
현재 파일 디렉터리 구조는 다음과 같습니다:

supervisorctl stop all
4. 구성을 다시 읽고 하위 프로세스를 업데이트하세요

supervisord가 시작되었기 때문에 ps -ef | grepsupervisord.conf를 통해 볼 수 있습니다. 하위 프로세스 구성 파일이 추가되었으며 다시 로드해야 합니다. 🎜🎜먼저 supervisord 디렉터리(cdsupervisord)를 입력하세요. 그렇지 않으면 다음 명령을 실행할 때 문제가 발생합니다. . 🎜
supervisorctl stop <name>
🎜프로세스 상태를 다시 확인하세요🎜
supervisorctl add <name>
🎜결과: 🎜
🎜test RUNNING pid 30278, uptime 1:29:41🎜
🎜test라는 프로세스가 다음과 같이 사용되었습니다. 데몬 프로세스가 백그라운드에서 실행 중입니다. 종료해 보겠습니다. 🎜
supervisorctl reomve <name>
🎜supervisorctl status를 다시 실행하면 상태가 starting에서 로 즉시 변경되는 것을 확인할 수 있습니다. /code>를 실행하면 <code>감독자의 역할이 이미 명확해지며 작업을 자동으로 모니터링하는 데 도움이 됩니다. 🎜🎜참고: 하위 프로세스 추가, 삭제, 시작 및 중지와 관련된 명령은 부록을 참조하세요. 🎜🎜🎜5. 웹 인터페이스 🎜🎜🎜웹 인터페이스는 그다지 유용하지 않습니다. 즉, 프로세스를 시작하거나 일시 중지하려는 경우 명령을 입력할 필요가 없습니다. 🎜rrreee🎜주석 제거🎜rrreee🎜supervisord 재시작🎜rrreee🎜브라우저 액세스: linux_ip:9001.🎜🎜Appendix:supervisorctl common Commands🎜🎜구성 파일 추가, reload🎜rrreee🎜구성 파일 변경, reload🎜rrreee 🎜supervisord 재시작 🎜아아아아 🎜모든 프로세스의 상태 보기🎜rrreee🎜지정된 프로세스의 상태 보기🎜rrreee🎜모든 하위 프로세스 시작🎜rrreee🎜지정된 하위 프로세스 시작🎜rrreee🎜모든 하위 프로세스 다시 시작🎜rrreee🎜지정된 하위 프로세스 다시 시작🎜rrreee🎜 모든 하위 프로세스 중지🎜rrreee🎜지정된 하위 프로세스 중지🎜rrreee🎜프로세스 그룹에 하위 프로세스 추가🎜rrreee🎜프로세스 그룹에서 하위 프로세스를 제거하세요. 먼저 중지해야 합니다. 참고: 제거한 후에는 다시 읽기 및 업데이트를 사용하여 프로세스를 다시 실행해야 합니다🎜rrreee🎜[관련 권장 사항:🎜Python3 비디오 튜토리얼🎜]🎜

위 내용은 Python 프로세스 관리 도구 Supervisor를 이해하도록 안내합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 jb51.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제