簡體   English   中英

通過java exec()在后台運行Shell腳本返回退出代碼127

[英]Running shell script in background via java exec() returns exit code 127

我正在嘗試通過java Runtime.exec()在linux框上運行命令,該命令將SSH到另一台計算機並在后台啟動腳本,將輸出重定向到/ dev / null。 該腳本有可能永遠運行,因此為什么我將其發送到后台。

String command = "ssh " + machineToRunOn + " 'simple.sh &>/dev/null &'";
 try {
            Process p = Runtime.getRuntime().exec(command);
            p.waitFor();
            int exitStatus = p.exitValue();
 }

問題是exitStatus總是非零(特別是127),並且腳本無法運行。

我可以在終端中手動運行相同的命令,並且效果很好。 同樣,我可以運行不發送到后台或通過exec()重定向的腳本,並且該腳本也可以正常運行。

我意識到使用exec()並不是最好的解決方案,但是我不知道為什么這不起作用。

似乎刪除單引號就是答案。 仍在嘗試弄清為什么。

String command = "ssh " + machineToRunOn + " simple.sh &>/dev/null &";
 try {
            Process p = Runtime.getRuntime().exec(command);
            p.waitFor();
            int exitStatus = p.exitValue();
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM