私はSpringブートアプリケーションを持っています。私はsudo startkde
でXサーバを起動した後、Ubuntuでsystemdサービスを実行します。コマンドラインでgedit
のようなGUIプログラムを起動できません。それは私がsudo java -jar demo.jar
を使用してアプリを起動するときに動作しますが、私はgedit
コマンドをシェルスクリプトの中に入れてみましたが、問題は解決しません。systemdサービスからGUIプログラムを起動できない
サービスを使用してGUIプログラムを起動する方法や、問題を解決する別の種類のサービスで春の起動を開始する方法はありますか。
はここにsystemdサービスです:
[Unit]
Description=demo
After=syslog.target
[Service]
User=ubuntu
ExecStart=/home/ubuntu/demo.jar --logging.file=logfile.log
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
は、ここでは春のブートコードです:
@RestController
@EnableAutoConfiguration
@SpringBootApplication
public class DemoApplication {
@RequestMapping("/")
String home() {
ProcessBuilder builder = new ProcessBuilder("gedit");
builder.redirectErrorStream(true);
try {
final Process process = builder.start();
try {
process.waitFor();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
return "Hello World!";
}
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
あなたのSpringアプリケーションは、systemdから呼び出すとまったく起動しますか?コマンドラインから実行する場合は、 "java -jar demo.jar"を使用します。なぜsystemdを使用しているときにそれを使用しないのですか? – jaysee
はい私は端末を閉じると "java -jar demo.jar"が停止し、 "nohup java -jar demo.jar"は起動から数日後に空腹が非常に気になるため、春のアプリはどちらの場合でも正常に起動します。それ。 – geogeek
systemdからプログラムを起動すると、ユーザがログインすると実行されますが、特定の端末やシェルには接続されません。 GUIまたはssh経由でログインできるとします。だから、 "gedit"はどの端末を使うのか "知る"ことができず、なぜ実行できないのかを知りません。これは私の前提です。 systemdから直接GUIプログラムを起動しようとしましたか(gedit)?ちょうどそれが動作するかどうかを確認する。 – jaysee