我正在處理需要多次在MAC OS中運行shell文件的項目。 shell文件將每次運行的結果寫入單獨的日誌文件。爲了加速這個過程,我必須使用我們機器中所有可用的內核。我試圖用Java中的BuildProcess來完成這個任務。它可以在幾秒鐘內正常工作,但幾秒後停止。在單核機器上運行每個進程大約需要18個小時。例如,如果運行以下操作,它將啓動兩個進程,並使它們保持約10秒的運行時間,但之後它們將被殺死並且沒有錯誤!Java中的多處理使用ProcessBuilder
ProcessBuilder pb1 = new ProcessBuilder("/bin/bash", "runFS.sh")
Process p1 = pb1.start()
ProcessBuilder pb2 = new ProcessBuilder("/bin/bash", "runFS.sh")
Process p2 = pb2.start();
任何幫助將不勝感激。
您是否確定該腳本不需要用戶輸入?那麼日誌文件呢?他們說什麼?你可以控制stdout/stderr並將它們重定向到你想要的地方嗎? – fge
請注意,由ProcessBuilder創建的進程的stdin,stdout和stdErr未連接到控制檯。如果你想看到這些進程的輸出(即它們的錯誤消息),你將不得不使用Process#getErrorStream/getInputStream。 – Aurand
程序的輸出保存在日誌文件中。這已在runFS.sh中處理。我只是簡單地想要在不同的CPU內核上使用不同參數運行此文件。 – Arash