进一步阅读

进一步阅读

我正在尝试创建一个在用户登录时运行的服务。

作为非 root 用户,我创建了一个文件:

> cat ~/.local/share/systemd/user/voodoo.service

[Unit]
Description=User service test

[Service]
RemainAfterExit=yes
Type=simple
ExecStart=/bin/bash -c "touch /tmp/ok123"

[Install]
WantedBy=default.target

但是,systemctl 无法识别它,

> systemctl --user restart voodoo.service
Failed to connect to bus: No such file or directory

有任何想法吗?

答案1

我认为你首先必须enable服务:

systemctl --user enable voodoo.service
Created symlink /home/andreatsh/.config/systemd/user/default.target.wants/voodoo.service → /home/andreatsh/.local/share/systemd/user/voodoo.service

正如您所看到的,这只是在适当的文件夹中创建一个符号链接。然后我运行:

systemctl --user restart voodoo.service 

而且服务很好。

答案2

实际上是两个。这是可能性更大的一种。

Ubuntu 15 切换到 systemd 进行系统范围的服务管理。但每用户服务管理仍然是新贵的领域,在 16.04 中仍然如此。

所以自然systemctl不会找到一个每个用户的实例来systemd交谈。请注意,systemctl做了不是说它无法识别服务单元文件。它表示无法连接到与每个用户实例对话的“总线” systemd

进一步阅读

相关内容