如何建立一個 for 迴圈來啟動很多進程?

如何建立一個 for 迴圈來啟動很多進程?

我想測試一些錯誤,為此我需要有 PID 大於 99999 的情況。有任何想法嗎?

答案1

您可以執行類似的操作來啟動具有所需 PID 的進程。

while true; do bash -c '[[ "$$" == 99999 ]] && echo PID is 99999'; done

您可以等到獲得所需的 PID,然後可能將語句替換echo為您實際需要測試的內容。

參考

被殺後還會用同一個pid嗎?

編輯

為什麼PID號會成長?是因為您一遍又一遍地運行不同的 bash 實例嗎?

我相信你所說的就是正在發生的事情。這可以簡單地測試如下。

while true; do bash -c 'echo $$' ; done

我們可以看到 PID 不斷增加,從 的手冊頁中bash我看到,

-c string 如果存在 -c 選項,則從字串讀取命令。如果字串後面有參數,它們將被指派給位置參數,從 $0 開始。

因此,根據我的理解,echo上述測試中的每個語句都作為一個單獨的進程執行,這就是為什麼我們可以看到 PID 正在遞增。

答案2

無論你想做什麼,很可能都有更好的方法,但如果你決心像

while [[ 1 == 1 ]]; do sleep 10000& done

將啟動許多sleeps,但可能需要一段時間才能啟動所有。當你有足夠的進程時,只需點擊Ctrl-C退出while循環即可。

相關內容