Shell-Script

系統服務“錯誤:無法初始化 GTK+,DISPLAY 設置是否正確?”

  • July 13, 2019
/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. 您的服務文件必須進入/etc/systemd/user. 為此執行mv /etc/systemd/system/Testing1.service /etc/systemd/user/
  2. 使用systemd使用者模式。從您的使用者帳戶(不是root )執行以啟動您的服務。systemctl --user start Testing1.service

說明 systemd有兩種執行模式,系統模式使用者模式系統模式在使用者登錄其會話之前啟動,因此此時沒有圖形會話。FreeFileSyncReadTimeSync需要訪問圖形X11顯示,因此它們不能通過系統模式執行。在使用者模式下systemd知道使用者圖形會話並使用它(僅當執行命令的 shell 屬於使用者及其圖形環境時)。可以找到更多細節在 ArchWikiStackOverflow 上

引用自:https://unix.stackexchange.com/questions/529115