已启用的 systemd 服务未启动

已启用的 systemd 服务未启动

我有两个 systemd 服务,一个是用于代理对 C 后端的调用的 flask 应用。虽然 flask 应用可以运行,但 C 程序不会在启动时启动。

我的服务文件如下所示:

[Unit]
Description=my backend
After=multi-user.target

[Service]
User=root
ExecStart=/home/root/camtool
Type=dbus
BusName=com.camera
Restart=always
RestartSec=10

我已经启用了这样的服务: systemctl enable camtool.service

如果我执行 a,服务就会启动systemctl start camtool.service,但如果我重新启动设备,服务就不会启动。

输出systemctl status camtool

● camtool.service - my backend
     Loaded: loaded (/etc/systemd/system/camtool.service; enabled; vendor preset: disabled)
     Active: inactive (dead)

如果我检查 journalctl,则没有任何条目。

journalctl -u camtool
-- Logs begin at Wed 2021-07-14 14:12:26 UTC, end at Wed 2021-07-14 14:16:26 UTC. --
-- No entries --

我不确定如何进一步调试,因为似乎没有任何错误消息。我该如何继续找出程序无法启动的原因?有没有办法可以验证是否尝试过?

C 程序使用 DBUS 来公开 flask 应用程序的函数,并通过套接字传输数据。

答案1

看来我通过重新启用该服务解决了问题。我进行了许多更改以尝试修复该文件,但当我禁用并重新启用时,我意识到符号链接位于错误的位置。

通过禁用和启用,此问题已得到解决。我建议在目标相关区域发生更改时禁用并重新启用。

在我这样做之前我添加了wantedby=multi-user.target

命令如下:

root@system:~# systemctl disable camtool
Removed /etc/systemd/system/multi-user-target.service.wants/camtool.service.
root@system:~# systemctl enable camtool
Created symlink /etc/systemd/system/multi-user.target.wants/camtool.service → /etc/systemd/system/camtool.service.

现在它可以随系统启动。

相关内容