考慮下面的腳本中只保留了幾個下來:重啓一堆服務器,重新啓動
for host in $(get-all-hosts)
do
(restart-server $host; wait-for-server-to-come-up $host) &
done
正如你可能已經猜到,restart-server
重新啓動服務器和命令wait-for-server-to-come-up
塊,直到服務器啓動(如,grep -m 1 'server up' <(tail -f /path/to/log)
)。
該腳本實質上是同時重啓所有服務器。我很好奇最簡單的方法是修改這個腳本在一些固定數量的服務器之後停止,並且在繼續下一次重新啓動之前等待一個服務器出現,以便在給定的情況下最多有4個服務器停止運行時間。我知道這樣做的一種方式是以4個塊爲單位重新啓動,然後等待每個塊中的所有pid,但我希望做一些更智能的事情並不難。
一些劃痕加工朝着一個解決方案:
第二個嘗試,利用丹尼斯的鏈接的一些想法。近乎理想的香草猛砸解決方案:
mkfifo mfifo
exec 3<>mfifo
echo >&3
echo >&3
echo >&3
for host in $(get-all-hosts)
do
read
(restart-server $host; wait-for-server-to-come-up $host; echo >&3) &
done <&3
我最大的剩餘這種解決方案的抱怨是,它假定存在一個尚未命名的隊列稱爲mfifo在使用的了。除此之外,我還沒有看到任何問題,並且據我所知,它的工作方式與預期完全一致。
添加一個下來的主機和內部while循環的計數器。服務器關閉> x時,向下取樣主機,直到服務器關閉
JohnP
你如何減少?我只是試了一下,似乎計數器永遠不會減少,也許是因爲它們在不同的進程中運行。 – jonderry
while循環解決方案可以通過讀取子進程寫入的文件描述符來執行,可能嗎? – jonderry