对 systemd 还很陌生,所以可能(希望如此)遗漏了一些琐碎的事情。提前致谢。
我正在尝试启用一项服务(bees
btrfs 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