이 기사에서는 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설치가 완료되면 Python
bin 디렉토리
아래에 이와 같은 파일이 여러 개 있을 것입니다. [inet_http_server] port=*:9001 ; 此处改为*便于调试참고: Python bin 디렉터리에는 환경 변수가 추가되어 있으므로 이러한 파일을 직접 실행할 수 있습니다.
mkdirsupervisord
. supervisorctl reload오류가 보고되는 경우 -bash: /etc/supervisord.conf: Permission failed, 루트 사용자로 전환해야 합니다. 2. 하위 프로세스 구성 파일 경로 생성
supervisorctl reread다음 작업에서는 이를 데몬 프로세스로 사용하려면 구성 파일을 conf.d 디렉터리에 저장해야 합니다. 3. 구성 파일을 수정하세요
supervisorctl update마지막 부분을
supervisorctl reload
4로 변경하세요. 초기 테스트
1.supervisordsupervisorctl 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 all4. 구성을 다시 읽고 하위 프로세스를 업데이트하세요
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!