![](/img/trans.png)
[英]how to launch a shell script in a new gnome terminal, from a java program
[英]open terminal failed: missing or unsuitable terminal: unknown when running shell script from Java program
我有一個 Java 程序運行一個帶有進程的 shell 腳本,但是由於某種原因,當我嘗試運行它時,它會拋出一個錯誤open terminal failed: missing or unsuitable terminal: unknown
。 從其他 SO 問題來看,我認為這是一個 tmux 問題,但我不確定如何解決它。 這是調用腳本的代碼:
ProcessBuilder pb = new ProcessBuilder("/Users/user/eclipse-workspace/project/start.sh");
Process p = pb.start();
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
System.out.println("output: ");
String s;
while ((s = stdInput.readLine()) != null) {
System.out.println(s);
}
這是shell腳本:
#! /bin/sh
ssh -tt -i ~/.ssh/ssh-key.key opc@___._.___.___ tmux attach -d << END
./run.sh
END
exit 0
我試過從終端運行腳本,它可以從終端運行,但是當我運行 Java 程序時它不起作用。
問題是您正在附加到交互式tmux
會話,您需要有一個支持光標移動代碼等的終端。
簡單的解決方法是不附加; 只需將要運行的命令提交到會話中即可。
ssh -tt -i ~/.ssh/ssh-key.key opc@___._.___.___ tmux send-keys './run' C-m
這顯然要求遠程tmux
會話中運行的任何東西都處於可以提交 shell 命令的狀態,即在 shell 提示符或類似提示下。 為了穩健性,您可能需要采取額外措施來確保始終如此,或者重構您的解決方案以避免在tmux
內部運行,例如通過讓命令將其輸出重定向到一個文件,您可以隨時從任何終端檢查它(盡管這假設您隨后也不需要與之交互)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.