我在 /etc/systemd/system/ 创建了下面的 test.service
[Unit]
Description=Operations
After=multi-user.target
[Service]
ExecStart=/opt/sga/tools/test_service_start.sh
ExecStop=/opt/sga/tools/test_stop.sh
[Install]
WantedBy=default.target
如果我执行 systemctl -l status test.service,下面是命令输出:
● test.service - test_Operations
Loaded: loaded (/etc/systemd/system/test.service; enabled; vendor preset: disabled)
Active: inactive (dead)
如果我在重新启动后执行“journalctl -u test.service -b”:
- No entries
谁可以帮我这个事
答案1
在使用系统总线时,我们通常使用:
[Install]
WantedBy=multi-user.target
根据您的系统,default.target
可能会别名(符号链接)为multi-user.target
或graphical.target
。在我的系统上,我可以看到 default.target 符号链接到graphical.target
:
$ systemctl status default.target
● graphical.target - Graphical Interface
Loaded: loaded (/lib/systemd/system/graphical.target; static)
Active: active since Wed 2021-03-17 07:44:06 CET; 6h ago
Docs: man:systemd.special(7)
graphical.target
有点奇怪,因为如果您需要图形环境来运行您的东西,您通常应该使用用户总线而不是系统总线。否则,如果您不同时设置XAUTHORITY
和设置,则会出现问题DISPLAY
我为你看到了两个选择:
WantedBy=multi-user.target
如果您的应用程序不需要图形环境,请使用。在编辑文件之前,运行sudo systemctl disable test.service
删除符号链接,然后编辑文件并运行sudo systemctl daemon-reload && sudo systemctl enable test.service
.保留
WantedBy=default.target
,但如果您需要图形环境,请将您的服务移至用户总线。用户总线上的另一个选项是graphical-session.target
。然而,它还没有被 DE 实现,所以虽然这听起来像是一个更好的匹配,但在选择它之前检查它是否在您的系统上引发。