我创建并启用了一项服务:
$ sudo systemctl enable /path/to/imaservice.service
Created symlink /etc/systemd/system/multi-user.target.wants/imaservice.service → /path/to/imaservice.service.
Created symlink /etc/systemd/system/imaservice.service → /path/to/imaservice.service.
它存在并持续存在于:
/etc/systemd/system/imaservice.service
/etc/systemd/system/multi-user.target.wants/imaservice.service
我现在可以顺利地启动/停止/状态。当我重新启动时,我无法启动它。我得到以下信息:
$sudo systemctl is-enabled imaservice
enabled
然而:
$sudo systemctl start imaservice
Failed to start imaservice.service: Unit imaservice.service not found.
每次重新启动时,我都必须重新启用:
$sudo systemctl enable imaservice
$sudo systemctl daemon-reload
此后一切恢复正常。
我究竟做错了什么?
答案1
我有同样的问题。
我发现的唯一解决方案是复制服务而不创建链接
sudo cp /path/to/imaservice.service /etc/systemd/system/multi-user.target.wants/imaservice.service
这样它就可以工作了。
答案2
我遇到了一个问题,我可以执行systemctl status
,systemctl stop
但不能systemctl start
在服务上执行,即使它在启动过程中确实启动了哈哈。
问题出在我的一个 .service 文件中,我After=network-online.service
本来应该After=network-online.target
尽管它仍然以那个拼写错误启动并启动了。
然后它和依赖服务开始像正常服务一样运行。哎呀,我真不敢相信 systemd 没有将这些拼写错误问题记录到 journalctl 中……