相关疑难解决方法(0)

重新启动Upstart实例进程

我正在运行多个工作实例,如本答案中所述:自动启动多个upstart实例

问题:我可以一次重启所有实例吗?

要开始我的工作,我可以做:

initctl启动我的工作者

然后允许我这样做:

initctl status worker N = 1 worker(1)启动/运行,进程551

initctl status worker N = 2 worker(2)start/running,process 552

有没有办法做这样的事情:

initctl重启我的工作者

我希望能够重新启动所有实例,而无需知道有多少实例正在运行.

这是我的my-workers.conf

start on stopped cloud-init
stop on shutdown

env NUM_WORKERS=4

script
  for i in `seq 1 $NUM_WORKERS`
    do
      start worker N=$i
    done
end script
Run Code Online (Sandbox Code Playgroud)

和worker.conf

stop on shutdown

chdir /path/to/current

respawn

instance $N

script
  exec su -c "/home/worker/.rvm/bin/rvm-shell -c 'bundle exec rake work 2>&1 >> /var/log/worker-$N.log'" worker
end script
Run Code Online (Sandbox Code Playgroud)

ubuntu upstart

30
推荐指数
2
解决办法
1万
查看次数

自动启动多个upstart实例

我们使用PHP gearman worker并行运行各种任务.一切都运行得很好,我有愚蠢的小shell脚本,当我想要它们时将它们旋转起来.作为一名程序员(因此也是懒惰的),我想看看我是否可以通过一个新手脚本来解决这些问题.

我想出了如何使用实例节,所以我可以使用实例编号启动它们:

description "Async insert workers"
author      "Mike Grunder"

env SCRIPT_PATH="/path/to/my/script"

instance $N

script
    php $SCRIPT_PATH/worker.php
end script
Run Code Online (Sandbox Code Playgroud)

这很好用,就像这样开始它们:

sudo start async-worker N=1
sudo start async-worker N=2
Run Code Online (Sandbox Code Playgroud)

我想要使​​用这些工作者的方法是调整其中的一些(可能每个核心一个等),我想在启动时这样做.要清楚,我不需要upstart脚本来检测核心数量.我很高兴只说"做8个实例",但这就是我想要多次运行的原因.有没有办法让我在upstart脚本中使用"start on"子句自动执行此操作?

例如,启动实例1,2,3,4?然后让它们在关机时正常退出?

我想我可以将它挂钩到init.d脚本中,但我想知道upstart是否可以处理这样的事情,或者是否有人已经弄清楚了这个问题.

干杯啦!

upstart instance worker gearman

28
推荐指数
1
解决办法
1万
查看次数

标签 统计

upstart ×2

gearman ×1

instance ×1

ubuntu ×1

worker ×1