我有以下 upstart 作业,它接受参数来运行同一作业的多个实例:
instance $ARG1,$ARG2
script
exec /path/to/executable "$ARG1" "ARG2"
end script
现在,如果我像这样开始我的工作的两个实例:
$ start my-job ARG1=ABCD ARG2=1
my-job (ABCD,1) start/running, process 6242
$ start my-job ARG1=EFGH ARG2=2
my-job (EFGH,2) start/running, process 6254
如何在一个命令中停止 my-job
的所有实例,而不是对 initctl list
执行 grep,提取正在运行的 实例的参数my-job
并在每个实例上执行 stop
。
我试过stop my-job
和stop my-job ARG1=\* ARG2=\*
。两者都不起作用。
最佳答案
我最终执行了以下操作,它适用于 [start|stop|restart] svc
。
scv.conf:
description "An Example Service"
start on networking
stop on runlevel[06]
svc-instance.conf:
instance $ADDR,$PORT
manual
respawn
console log
exec /opt/svc/bin/svc -a $ADDR -p $PORT
start-svc-task.conf:
start on starting svc
task
script
for a in 10.10.10.1 10.10.10.2 10.10.10.3 10.10.10.4
do
for p in 4001 4002 4003 4004
do status svc-instance ADDR=$a PORT=$p \
|| start svc-instance ADDR=$a PORT=$p \
done
done
end script
stop-my-job-task.conf:
start on stopping svc
task
script
for a in 10.10.10.1 10.10.10.2 10.10.10.3 10.10.10.4
do
for p in 2001 2002 2003 2004
do status svc-instance ADDR=$a PORT=$p \
&& stop svc-instance ADDR=$a PORT=$p \
|| continue
done
done
end script
自己看看是否status ||开始
和status && 停止|| continue
您的情况需要逻辑。我应该注意,我的原始用例只需要一个实例变量,而且我还没有用这样的两个变量对此进行测试。
关于ubuntu - 如何停止 Upstart 工作的所有实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13168337/