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

WBOY
풀어 주다: 2022-07-28 15:34:46
앞으로
2326명이 탐색했습니다.

이 기사에서는 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</code >: 하위 프로세스 시작 명령;</li><li><code>stdout_logfile=/tmp/supervisor.stdout.log</code >: 로그;</li><li><code>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으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!