我已经写了几个systemd用户服务文件,我希望用户启用它们并且需要有效的网络连接。我认为这很容易:
Wants=network-online.target
After=network-online.target
但是,服务似乎还为时过早,在journalctl
我看来:
network-online.target: Cannot add dependency job, ignoring: Unit network-online.target failed to load: No such file or directory.
然后我搜索更多并尝试
Wants=network.target
After=network.target
并且做到了sudo systemctl enable systemd-networkd-wait-online.service
。
现在我在journalctl
:
network.target: Cannot add dependency job, ignoring: Unit network.target failed to load: No such file or directory.
再次,服务开始得太早了。
该消息应该在那里吗?如何调试我的问题?
编辑:原因很简单,并且在Arch Wiki中有明确说明:
systemd --user
与流程分开运行systemd --system
。用户单位不能引用或依赖系统单位。
该论坛帖子似乎提出了一种简单的解决方案:我应该link
以用户身份使用必要的系统单元,从而在其单元搜索路径上创建指向该系统的符号链接。
这样做之后,我看不到任何No such file or directory
消息,但是,在网络联机之后,我仍然无法使服务真正运行。我曾尝试连接network.target
,network-online.target
并且systemd-networkd-wait-online.service
,设置我的单位依赖于每个人,没有成功。当我在用户模式下检查链接单元的状态时, 它们全部消失了,例如:
$ systemctl --user status network.target
● network.target - Network
Loaded: loaded (/usr/lib/systemd/system/network.target; linked; vendor preset: enabled)
Active: inactive (dead)
Docs: man:systemd.special(7)
http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget
$ systemctl status network.target
● network.target - Network
Loaded: loaded (/usr/lib/systemd/system/network.target; static; vendor preset: disabled)
Active: active since Sat 2015-07-18 19:20:11 MSK; 3h 35min ago
Docs: man:systemd.special(7)
http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget
Jul 18 19:20:11 calc-server systemd[1]: Reached target Network.
Jul 18 19:20:11 calc-server systemd[1]: Starting Network.
但是,network-online.target
链接后我可以在用户模式下看到活动状态:
$ systemctl --user status network-online.target
● network-online.target - Network is Online
Loaded: loaded (/usr/lib/systemd/system/network-online.target; linked; vendor preset: enabled)
Active: active since Sun 2015-07-19 00:35:38 MSK; 2min 48s ago
Docs: man:systemd.special(7)
http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget
Jul 19 00:35:38 calc-server systemd[469]: Reached target Network is Online.
Jul 19 00:35:38 calc-server systemd[469]: Starting Network is Online.