ubuntu - 如何停止 Upstart 工作的所有实例

标签 ubuntu upstart

我有以下 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-jobstop 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/

相关文章:

bash - 在 upstart 脚本中切换用户

linux - Upstart 调用脚本(用于插入的 USB 驱动器)

ubuntu - FCEUX 模拟器不显示工具菜单

eclipse - 您没有查看 eclipse 内容所需的权限

git克隆 "does not appear to be a git repository"

linux - 通过 crontab 安排 UpStart 初始化脚本

ubuntu - Airflow Upstart 直接停止/等待

linux - 如何将 stderr 传输到 stdin?

perl - 无法运行 cgi,仅显示纯文本 (Ubuntu 13.10 Apache 2.4)

python - 在 Ubuntu 上安装 pylibmc