任务:在启动 Linux 时启动 Firefox (Ubuntu 18.04 LTS)
问题:我认为问题是我想启动一个GUI程序
我做错了什么以及如何解决问题?
Systemd 文件位于 ~/.config/systemd/user
使能够:systemctl --user enable firefox
我的单位档案:
Description=Start Firefox
PartOf=graphical-session.target
[Service]
ExecStart=/usr/bin/firefox
Type=oneshot
[Install]
WantedBy=graphical-session.target```
答案1
有用 !
服务单位文件应放入~/.config/systemd/user
.
由于它是每用户服务,因此您应该使用 sans sudo--user
选项来 操作它。systemctl
例如:
启用:例如 systemctl --user enable firefox
这也适用于启用和禁用它。
~/.config/systemd/user/firefox.service:
systemd 人员希望使每用户服务看起来像每登录会话服务的一部分是整个图形会话机制,您的服务单元必须将其与设置合并:
[Unit] PartOf=graphical-session.target
如果 graphical-session.target
在图形登录后未激活(您可能拥有旧的或稳定的系统)。
登录时没有运行服务的默认挂钩,因此您必须自己触发它。我从我的档案中做这件事~/.xsession
。
systemctl --user import-environment PATH DBUS_SESSION_BUS_ADDRESS
systemctl --no-block --user start xsession.target
第一行将一些环境变量导入到 systemd 用户会话中,第二行启动目标。我的xsession.target
文件:
[Unit] Description=Xsession running BindsTo=graphical-session.target
我的单位档案:
Description=Start Firefox
PartOf=graphical-session.target
[Service]
ExecStart=/usr/bin/firefox Type=simple
Restart=on-failure
[Install]
WantedBy=xsession.target```
答案2
- 任何日志
systemctl status firefox.service
(假设 firefox.service 是名称)可能有助于调试相同的问题。 - 声明为预期会采取某些操作并立即退出的服务
oneshot
(因此,它们不是真正的服务,不会保留正在运行的进程)。这些类型的服务的常见模式是通过设置和拆卸操作来定义。