web-dev-qa-db-ja.com

システムサービス「エラー:GTK +を初期化できません。DISPLAYは正しく設定されていますか?」

/home/matthew/@/Sync/FreeFileSync "/home/matthew/@/Sync/Backup.ffs_batch"

上記を手動で実行すると機能しますが、次のサービスを介して実行すると機能しません。

matthew@matthew-pc:~$ cat /lib/systemd/system/Testing1.service
[Service]
ExecStart=/home/matthew/@/Sync/FreeFileSync "/home/matthew/@/Sync/Backup.ffs_batch"

[Install]
WantedBy=multi-user.target

エラーは次のとおりです。

matthew@matthew-pc:~$ Sudo systemctl status Testing1.service
[Sudo] password for matthew: 
● Testing1.service
Loaded: loaded (/lib/systemd/system/Testing1.service; disabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Tue 2019-07-09 14:14:33 HKT; 1s ago
Process: 10255 ExecStart=/home/matthew/@/Sync/FreeFileSync /home/matthew/@/Sync/Backup.ffs_batch (code=exited, status=25
Main PID: 10255 (code=exited, status=255)

Jul 09 14:14:33 matthew-pc systemd[1]: Started Testing1.service.
Jul 09 14:14:33 matthew-pc FreeFileSync[10255]: 14:14:33: Error: Unable to initialize GTK+, is DISPLAY set properly?
Jul 09 14:14:33 matthew-pc systemd[1]: Testing1.service: Main process exited, code=exited, status=255/n/a
Jul 09 14:14:33 matthew-pc systemd[1]: Testing1.service: Failed with result 'exit-code'.

エラー:GTK +を初期化できません。DISPLAYが正しく設定されていますか? "

1
Matthew Wai

次の手順に従ってください。

  1. サービスファイルは/etc/systemd/user。実行mv /etc/systemd/system/Testing1.service /etc/systemd/user/そのため。
  2. systemduser modeを使用します。実行systemctl --user start Testing1.serviceユーザーアカウントから(rootではなく)サービスを開始します。

説明systemdには2つの実行モード、system modeおよびuser modeシステムモードは、ユーザーがセッションにログインする前に起動されるため、この時点ではグラフィカルセッションはありません。 FreeFileSyncおよびReadTimeSyncは、グラフィカルX11ディスプレイにアクセスする必要があるため、 viasystem modeを介して実行されていません。 ユーザーモードでは、systemdはユーザーのグラフィカルセッションを認識し、それを使用します(のみifコマンドを実行するシェルは、ユーザーとそのグラフィカル環境に属しています)。詳細は ArchWiki内 または StackOverflow上 を参照してください。

1
Pierre Ayoub