系统服务“错误:无法初始化 GTK+,DISPLAY 设置正确吗?”

系统服务“错误:无法初始化 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

请按照以下步骤操作:

  1. 您的服务文件必须进入/etc/systemd/user.mv /etc/systemd/system/Testing1.service /etc/systemd/user/为此执行。
  2. 使用用户模式系统systemctl --user start Testing1.service从您的用户帐户执行(不是) 启动您的服务。

解释 系统有两种运行模式,系统模式用户模式。这系统模式在用户登录其会话之前启动,因此此时没有图形会话。免费文件同步读取时间同步需要访问图形X11显示,因此它们无法运行通过系统模式。在里面用户模式,系统了解用户图形会话并使用它(除非执行命令的 shell 属于用户及其图形环境)。可以找到更多详细信息在 ArchWiki 中或者在 StackOverflow 上

相关内容