有条件地运行supervisord程序

Nag*_*rla 7 supervisord

可以说我在监督中有两个程序.有没有办法有条件地运行第一个程序(后台进程)而不必将其移动到单独的脚本文件?

[supervisord]
nodaemon=true
logfile=/tmp/supervisord.log

#Need this program to run conditionally - say based off an environment variable being set
[program:prog1]
command=/bin/prog1

[program:prog2]
command=/bin/prog2 -DFOREGROUND
Run Code Online (Sandbox Code Playgroud)

Mil*_*kic 5

复活旧线程,但@nelson 的答案不完整。也就是说,supervisor 中的环境变量需要格式化才能%(ENV_YOURVARIABLE)s被识别(注意前缀ENV_,%括号之前和s末尾的符号)。此外,您必须在将其发送到 bash 脚本之前将其导出:

[program:prog1]
command=bash -c "export INIT_PROG=%(ENV_INIT_PROG)s  && ./conditional-startup.sh"
Run Code Online (Sandbox Code Playgroud)

条件启动.sh:

#!/bin/bash

if [ $INIT_PROG = "some value" ]; then
    /bin/prog1
fi
Run Code Online (Sandbox Code Playgroud)

也可以看看:


小智 3

将条件值传递给SERVER1_START并控制流程。

[program:somecommand]
command=bash -c "if [ ${SERVER1_START} = "VALUE-X" ]; then /apps/bin/start.sh 
/apps/server.properties; fi"
Run Code Online (Sandbox Code Playgroud)