2011-07-16 47 views
0

我總是變得瘋狂與bash,我不明白它。 我基本上要做到這一點(我不使用某些特定的語法,它只是解釋我的問題):相同的命令,具有不同的參數,一段時間真正的循環與bash或其他東西

processes_count = 20; 

for (i = 0; i < processes_count; i++) 
{ 
    php -f file.php "{$i}-{$processes_count}" & 

    proc_id[i] = $! 
} 

以上週期啓動進程。下一個應該保持這個過程「永遠活着」!

while(true) 
{ 
    foreach(proc_id as id) 
    { 

    if(!exist(proc_id[id])) 
    { 
     php -f file.php "{$id}-{$processes_count}" & 

     proc_id[id] = $! 
    } 

    } 
    sleep 5 
} 

如果有人能幫助翻譯成bash中,蟒蛇什麼這個,謝謝:)

+0

這是如何連接到python的? –

+0

我刪除了python。我試圖做你看到上面,沒有成功:) – cedivad

+1

這是醜陋的,但它的作品:) processes_count = 20; test = 1; 用於((ⅰ= 1;我<= processes_count;我++)) { PHP -f /w/web/back/download_gateway.php 「{$ I} - {$ processes_count}」 & proc_id [$ i] = $! } while true; ((i = 1; i <= processes_count; i ++)) do 如果[! -f「/ proc/$ {proc_id [$ {i}]}/exe」]; 然後 PHP -f /w/web/back/download_gateway.php 「{$ I} - {$ processes_count}」 & proc_id [$ i] = $! 網絡 } 睡眠1個 做 – cedivad

回答

1

我不認爲你可以做到這一點,因爲bash不提供一種方法來「等待任何一個孩子的死亡過程,讓我知道死亡是哪一個。「最近的做法是wait

wait 
wait [jobspec or pid ...] 

等待,直到每個進程ID PID或工作規範 JOBSPEC退出指定的子進程,並返回最後一個命令的退出狀態等待。如果給出了 工作規範,則等待作業中的所有進程。如果沒有給出參數 ,則等待所有當前活動的子進程,並且返回狀態 爲零。如果沒有JOBSPEC也不PID指定外殼的活動的子過程, 返回狀態是127

這意味着你可以等待一個特定的孩子死了,或者你可以等待所有的孩子死了,但你不能做你想做的。

如果你放入Perl或Python,你可以使用wait系統調用。

相關問題