
我編寫了一個 bash 腳本來在 ubuntu 或 Red Hat 環境中執行我的 jar 檔案。這是我的 bash 腳本
#!/bin/bash
JAVA_HOME=/usr/lib/java/jdk1.8.0_131
$nohup java -jar /home/chikin/Downloads/hardcoded.jar & tail -f nohup.out
我的bash腳本將執行我開發的jar,我希望將jar檔案的輸出列印到nohup.out
或任何txt檔案中,這樣我可以輕鬆地找出任何問題,但當我執行腳本時似乎沒有列印任何內容,它會列印出終端中的所有輸出。但是當我 nohup java -jar /home/chikin/Downloads/hardcoded.jar &
直接從終端執行時,它能夠將所有 jar 輸出列印到 nohup.out 中。我可以知道為什麼我的腳本不起作用嗎?我的腳本也無法在每次重新啟動 ubuntu 機器時觸發,我測試了許多解決方案,但沒有一個能正常工作
答案1
除非您已將 的值匯出nohup
到腳本的環境中(例如export nohup=/usr/bin/nohup
),否則$nohup
將計算為空字串 - 因此您的命令
$nohup java -jar /home/chikin/Downloads/hardcoded.jar
變得平淡
java -jar /home/chikin/Downloads/hardcoded.jar
所以nohup
根本沒有被調用。你可能想要
nohup java -jar /home/chikin/Downloads/hardcoded.jar & tail -f nohup.out
(沒有$
)。
也許最好讓輸出文件明確:
nohup java -jar /home/chikin/Downloads/hardcoded.jar > nohup.out & tail -f nohup.out
因為如線上說明頁所述,輸出檔案的規則取決於標準輸出是否為終端:
If standard output is a terminal, append output to 'nohup.out' if pos‐
sible, '$HOME/nohup.out' otherwise. If standard error is a terminal,
redirect it to standard output. To save output to FILE, use 'nohup
COMMAND > FILE'.