2017-01-04 15 views
0

私は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); 
    } 
} 
+0

あなたのSpringアプリケーションは、systemdから呼び出すとまったく起動しますか?コマンドラインから実行する場合は、 "java -jar demo.jar"を使用します。なぜsystemdを使用しているときにそれを使用しないのですか? – jaysee

+0

はい私は端末を閉じると "java -jar demo.jar"が停止し、 "nohup java -jar demo.jar"は起動から数日後に空腹が非常に気になるため、春のアプリはどちらの場合でも正常に起動します。それ。 – geogeek

+1

systemdからプログラムを起動すると、ユーザがログインすると実行されますが、特定の端末やシェルには接続されません。 GUIまたはssh経由でログインできるとします。だから、 "gedit"はどの端末を使うのか "知る"ことができず、なぜ実行できないのかを知りません。これは私の前提です。 systemdから直接GUIプログラムを起動しようとしましたか(gedit)?ちょうどそれが動作するかどうかを確認する。 – jaysee

答えて

0

systemdは直接自動起動するGUIアプリケーションに適していないです。 @ jayseeは説明したように、特にGUIには接続していません。

何がsystemd でもは、ウィンドウマネージャを起動すると、特定のユーザーに自動的にログインするように設定できます。そのユーザーは、ウィンドウマネージャの「自動起動」機能を使用してGUIアプリケーションを起動できます。

私は自分自身と同じ経路を使い、systemdを排他的に使用しようとしていましたが、他の経路は私が動作することがわかったものです。

これはRaspberry Pisの一般的な使用例です。したがって、[Raspberry PI autostart kiosk]に関するチュートリアルを検索する場合は、いくつかのオプション(Raspberry Piを使用しているかどうか)を見つける必要があります。新しいRaspberry Pisは新しいシステムベースのDebian版を使用しているので、実際にはUbuntu 16.04でやりたいこととよく似ています。

関連する問題