[英]Executing a shell script in java as a thread
我需要在Java程序中執行Shell腳本。 我發現我可以使用processbuilder和runtime.exec ..但我的Web服務器每180秒超時一次,但是我的腳本執行花費的時間更多。.我不想使用此方法的過程..還有其他方法我可以使用線程執行此操作。
謝謝。
我假設腳本的響應旨在供人類閱讀。
良好的界面設計和人性暗示,如果您的腳本運行需要超過180秒的時間,則應與Web服務器分開運行。 在Linux上,我建議將其放入“ cron”,並使其定期運行。 您只能通過Web服務器提供腳本的結果,而響應時間以秒為單位,而不是幾分鍾。
如果您的腳本依賴於http請求中的參數或僅在Web服務器環境中可用的其他信息,則可以選擇以下選項。
如果沒有其他信息,例如腳本示例或描述從何處獲得結果的描述,那是我所能做的最好的。
一個進程可以運行多個線程,但是它們仍然是該進程的一部分。
因此,Java程序中的所有線程都是Java進程的線程,並且一個線程無法運行另一個程序的線程。
Shell腳本由程序運行:shell程序! (/ bin / bash或/ bin / sh)
無論如何,shell腳本通常會在其他幾個進程中運行其他程序。
不,您不能在Java線程中運行Shell。
通常,如果您有與Java程序分離的代碼(例如在單獨腳本中的代碼),則沒有理由說明當該代碼可以集成到程序中時,為什么您的代碼將執行外部腳本。 充其量是不安全的。 因為外部腳本是可編輯的,所以您基本上允許程序執行任意代碼。 您正在做的事情對我來說聽起來幾乎應該只限於單元測試或構建任務。
作為單元測試任務,您可以在項目的測試階段使用線程化的JUnit運行程序運行外部腳本。
另外,與程序分開,您還可以使用Gradle任務和Gradle具有的parallellforks選項來執行它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.