在我的作業中,我和我的團隊(我們是五個人)在日常作業中使用 Java 程式。我沒有要求每個人都安裝 Java 并在他們的筆記本電腦上運行程式,而是設定了一個小 VM,將 Java 代碼放在上面,然后構建了一個原始的小網頁作為界面。當同事在網頁上按下“RUN CODE”按鈕時,網頁會運行一個簡單的 bash shell 腳本:
#!/bin/bash
cd /path/to/java/code
runJavaCode.exe > $OUTPUTFILE
echo "Finished running the program! Output is...\n"
echo "$OUTPUTFILE"
echo "End of script."
這都是可笑的笨拙,但它符合我們的目的。
好的,問題來了:最近 Java 代碼需要超過兩分鐘才能完成計算。它作業正常,我不關心代碼的正確性。但是我的同事發現他們的 Web 瀏覽器在等待 shell 腳本的輸出時超時。瀏覽器在 Java 代碼完成之前就放棄了。
所以我需要一些解決方案來保持瀏覽器和腳本之間的 TCP 會話處于活動狀態,以便為代碼爭取更多時間。但是怎么做?
我想到的一個解決方案是:Java 代碼在運行時不斷列印到 STD_OUT。shell 腳本將該輸出收集到$OUTPUTFILE
中,然后echo
只完成 Java 代碼。但是,shell 腳本難道不能通過某種方式將 Java 代碼輸出實時反饋給用戶嗎?那將解決我的問題。
僅供參考:我的虛擬機是 Ubuntu 22.04(Jammy Jellyfish)。我正在運行 Apache2 版本 2.4.52 作為網路服務器,我的 bash 版本是 5.1.16(1)。
uj5u.com熱心網友回復:
嘗試:
runJavaCode.exe | tee $OUTPUTFILE
筆記:
- 寫入 java 程式輸出的副本,
$OUTPUTFILE
同時輸出也發送到 stdout - 我不知道您的特定網頁將如何處理持續的輸出流(即,網頁可能需要以一種基于新資料推送自動“重繪 ”的方式進行編碼 - java程式的標準輸出流)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/439448.html