【发布时间】:2022-11-15 11:31:00
【问题描述】:
您如何确保运行sudo supervisorctl stop myservice 确实停止了我的服务?
我有一个主管配置,如:
[program:myprogram]
command=/usr/local/bin/run_script.sh
directory=/usr/local/bin
user=myuser
numprocs=1
process_name=%(program_name)s
stdout_logfile=/var/log/run_script.log
stderr_logfile=/var/log/run_script.log
autostart=true
autorestart=true
startsecs=10
stopsignal=KILL
文件run_script.sh 进行一些 shell 初始化,然后启动一个单独的 Python 脚本,run_script.py,它通过joblib.Parallel 阻止但运行一些多个进程。
当我启动守护进程时,Supervisor 启动它很好。但是,当我运行sudo supervisorctl stop myprogram 时,守护程序永远不会停止,即使主管将它们列为已停止。几分钟后,如果我运行ps aux | grep -i run_script,我可以看到 .sh 和 .py 脚本都在运行。
为什么 Supervisor 无法停止守护进程?
我已经指定了 KILL 停止信号。启动 Python 脚本的 Bash 脚本是否存在一些问题,Python 脚本本身会启动多进程,这会阻止 Supervisor 正确停止进程?
【问题讨论】:
标签: python supervisord