3

同じジョブの複数のインスタンスを実行する引数を取る次のアップスタート ジョブがあります。

instance $ARG1,$ARG2

script
    exec /path/to/executable "$ARG1" "ARG2"
end script

ここで、次のようにジョブの 2 つのインスタンスを開始するとします。

$ 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-jobgrep oninitctl listを実行し、実行中のインスタンスのパラメーターを抽出し、各インスタンスでmy-jobaを実行する以外に、1 つのコマンドでのすべてのインスタンスを停止するにはどうすればよいですかstop

私は試してみましstop my-jobstop my-job ARG1=\* ARG2=\*。どちらも機能しません。

4

2 に答える 2

2

私は次のことをやってしまいました[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

停止-私の-ジョブ-タスク.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 || startあなたの場合にstatus && stop || continueロジックが必要かどうかを自分で確認してください。私の元のユース ケースでは 1 つのインスタンス変数のみが必要であり、そのような 2 つの変数でこれをテストしていないことに注意してください。

于 2012-12-23T17:09:09.027 に答える
1

信号を使用します。次のようにすると、それらすべてを一度に停止できますinitctl emit scv-stop

scv.conf:

description "An Example Service Starter"
start on networking
stop on runlevel[06]

for addr in 10.10.10.1 10.10.10.2 10.10.10.3 10.10.10.4;
{
    for port in 4001 4002 4003 4004;
    {
        status svc-n $addr:$port || start svc-n ADDR=$addr PORT=$port
    }
}
script

scv-n.conf

description "An Example Service Instance"
instance $ADDR:$PORT
stop on runlevel[06] or scv-stop

script
    exec /opt/svc/bin/svc -a $ADDR -p $PORT
end script
于 2014-02-20T15:20:44.360 に答える