我運行一個工人的多個實例,如這個答案說明:Starting multiple upstart instances automatically重新啓動新貴實例處理
問:我可以重新啓動所有情況下一次?
要開始我的工作人員,我可以這樣做:
initctl的開始我的同事
,然後讓我做的事情:
initctl的狀態工人N = 1名工人(1)啓動/運行,進程551
initctl狀態worker N = 2 worker(2)start /運行,處理552
有沒有辦法做這樣的事情:
initctl的重新啓動我的同事
我希望能夠重新啓動所有實例,而不必知道有多少人在跑步。
這裏是我的我的,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
而且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
我花了一段時間來理解你的意思,但一旦我得到了它... *頭腦吹* – Evgeny
@Evgeny同樣在這裏,哈哈。如果和我一樣,也許是Evgeny,你只花了5分鐘試圖理解這裏發生了什麼:基本上,my-workers.conf產生了多個暴發戶腳本和退出,但是每個worker.conf現在都有一條停止阻止我的工人',所以當你試圖阻止已經停止的員工流程時,工人們仍然會聽它並死。所以,「重新啓動」我的工作人員,即使它之前沒有真正運行,也會導致殺死工人(停止)並再次運行預啓動腳本(啓動),再次產生它們。 – Mahn
它的作品,但它是相當hackish。事實上,「服務我的工作人員開始」會掛起。 Upstart文檔指出:「所有的作業文件都必須有一個可執行文件或腳本節。」預啓動腳本和後停腳本 - 這些預計不會啓動進程,事實上,它們不能啓動。也許最好是創造另一個停止或重新啓動員工的工作。 –