2012-06-12 85 views
0

我需要在Linux下啓動幾個(每臺機器至少有8臺服務器)幾乎相同的進程,每個進程都有自己的命令行參數,每個進程都在自己的目錄中。我不想親手做這件事。Linux中的多個進程

這樣做的最好方法是什麼?它是以/etc/init.d這種方式與httpd這樣做的(你會看到幾個進程正在運行),還是有其他方式?

我應該補充說,如果他們死亡,或者在某個特定時間,我也希望他們自動啓動,因此可能至少cron和monit必須成爲解決方案的一部分?

+0

我要補充一點,我還希望他們能夠自動,如果他們死開始,和/或在一定的時間,所以可能至少cron和可能的monit必須是一部分的解決方案? – Ivan

+3

如果您要添加到您的問題中,請單擊您的問題下的[編輯](http://stackoverflow.com/posts/11004050/edit)鏈接並編輯該問題。評論不應包含重要信息,否則您的問題將無法得到解答。 – ghoti

+0

這些流程是否需要與控制終端相關聯,還是可以在後臺運行? – ghoti

回答

2

如果您需要將流程與控制終端關聯,您可以考慮使用GNU Screentmux。隨着屏幕上,您可以創建類似的配置文件:

startup_message off 
screen -t foo 1 /path/to/someprogram 
screen -t bar 2 /path/to/another 

如果你還好只是backgrounding他們,然後...只是背景他們。

#!/bin/bash 

/usr/bin/nohup /path/to/someprogram & 
/usr/bin/nohup /path/to/another & 

echo "All done!" 

如果您需要它們在死亡時重新啓動,那麼可以考慮將它們包裹在一個再發射器中。例如,請參閱daemontools。或者像一個簡單的shell腳本:

while ! /path/to/flakeybinary; do 
    echo "Darn, died again." >&2 
done 
echo "Exited normally, yay." 
+0

謝謝。所以對於參數,我可以說/ usr/bin/nohup/path/to/someprogram param1 param2& – Ivan

+1

我認爲這對你來說是一個有價值的實驗。 – ghoti