systemctl enable 似乎成功了,但单元没有按照 [Install] WantedBy 的要求安装

systemctl enable 似乎成功了,但单元没有按照 [Install] WantedBy 的要求安装

对 systemd 还很陌生,所以可能(希望如此)遗漏了一些琐碎的事情。提前致谢。

我正在尝试启用一项服务(beesbtrfs dedup; 下面的单元文件),但enable/[Install]似乎没有任何效果?

我运行了下面的命令,粘贴了完整的输出,enable似乎成功了。我没有看到任何相关内容journalctl。首先,添加了单元文件(如下所列)/etc/systemd/system/[email protected]

# systemctl daemon-reload
# echo $?
0
# systemctl enable [email protected] # <-- I believe I don't need an '@name' just '@' here? 
# echo $?
0
# systemctl status [email protected]
Failed to get properties: Unit name [email protected] is neither a valid invocation ID nor unit name.

另外,我没有看到任何basic.target.wants/内容/usr/lib/systemd/system/;但请注意很多事情都是WantedBy=basic.target......所以这可能是相关的?

这是我在运行上述程序之前mv创建的单元文件/etc/systemd/system/[email protected]

[Unit]
Description=Bees (%i)
Documentation=https://github.com/Zygo/bees
After=sysinit.target

[Service]
Type=simple
ExecStart=/usr/sbin/beesd --no-timestamps %i
CPUAccounting=true
CPUSchedulingPolicy=batch
CPUWeight=12
IOSchedulingClass=idle
IOSchedulingPriority=7
IOWeight=10
KillMode=control-group
KillSignal=SIGTERM
MemoryAccounting=true
Nice=19
Restart=on-abnormal
StartupCPUWeight=25
StartupIOWeight=25

[Install]
WantedBy=basic.target

答案1

我相信我已经找到了原因;

上述单元文件是一个模板,由 标识@;我以为我可以实例化它而不用实例名...但这似乎是错误的。如果我给它一个名字,它就会按预期安装。

请注意,我错过了%i单元文件中的;这是实例名称;因此,即使它使用空名称正确安装(我认为是默认的),脚本/单元仍然可能会失败。

如果您遇到类似的问题,这是最好的综合systemd演练: https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files

相关内容