我正在尝试创建一个在用户登录时运行的服务。
作为非 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
。