이 기사에서는 Python에 대한 관련 지식을 제공합니다. Supervisor는 Python으로 개발된 프로세스 관리 시스템으로, 이를 통해 사용자는 Linux에서 프로세스를 모니터링하고 제어할 수 있으며 일반 명령줄 프로세스를 백그라운드 데몬 프로세스로 자동 전환할 수 있습니다. 비정상적으로 종료되면 다시 시작해보세요. 모두에게 도움이 되기를 바랍니다.
[관련 권장 사항: Python3 동영상 튜토리얼 ]
Supervisor는 Python으로 개발된 프로세스 관리 시스템으로, Linux에서 프로세스를 모니터링하고 제어할 수 있습니다. 실행 중인 프로세스는 백그라운드 데몬 프로세스가 되어 비정상적으로 종료되면 자동으로 다시 시작될 수 있습니다
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 '+%Y-%m-%d %H:%m:%S'` 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
bin 디렉토리
아래에 이와 같은 파일이 여러 개 있을 것입니다. [inet_http_server] port=*:9001 ; 此处改为*便于调试
mkdirsupervisord
. supervisorctl reload
supervisorctl reread
supervisorctl update
supervisorctl reload
4로 변경하세요. 초기 테스트
1.supervisordsupervisorctl status
supervisorctl status <name>
supervisorctl start all
supervisorctl start <name>
Ctrl + C
하여 종료3. supervisorctl restart all
test.conf
에는 다음 내용이 포함되어 있습니다. supervisorctl restart <name>
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
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!