Ubuntu で systemd を使用して起動時にプログラムを起動する

Ubuntu で systemd を使用して起動時にプログラムを起動する

起動時に (実際にはユーザー ログイン時に)、systemd を使用して Java バックエンド プログラムを実行し、X サーバーを使用してメモリ内にレンダリング ウィンドウを作成したいと考えています。レンダリング ウィンドウは、GPU でボリューム レンダリングを行うために VTK によって作成され、そこからスクリーン ショットを取得します。

以下は/etc/systemd/systemディレクトリに配置したサービス ファイルです。

[Unit]
Description= myservice
After=mysql.service

[Service]
User=root
Environment=DISPLAY=:0
Restart=always
Type=forking
ExecStart=/root/myservice/startup.sh
ExecStop=/root/myservice/shutdown.sh

[Install]
WantedBy=multi-user.target

GUI でログインした後、サービスが開始されません。そこで、xhost +すべてのユーザーが表示にアクセスできるようにするコマンドを実行し、systemctl start myserviceサービスを手動で開始します。すると、目的の結果が得られます。

ログイン時に myservice を自動的に実行する方法があるかどうか疑問に思っています。また、もう 1 つ質問ですが、すべてのコンピューターの環境を固定の DISPLAY 番号に設定しても問題ありませんか?

Ubuntu 16.04/18.04を使用しています。

関連情報