为什么我的 systemd 服务没有自动启动?

为什么我的 systemd 服务没有自动启动?

这是我的 boondocks-agent.service 文件。我已将其安装在 /lib/systemd/system 中:

[Unit]
Description=Boondocks agent
Requires=\
    balena.service 
After=\
    balena.service 

[Service]
Type=simple
Restart=always
RestartSec=10s
WatchdogSec=60
EnvironmentFile=/etc/boondocks-agent/agent.conf
EnvironmentFile=-/tmp/boondocks-agent.conf
ExecStartPre=-/usr/bin/stop-boondocks-agent
ExecStart=/usr/bin/healthdog --healthcheck=/usr/lib/boondocks-agent/boondocks-agent-healthcheck  /usr/bin/start-boondocks-agent
ExecStop=-/usr/bin/stop-boondocks-agent

[Install]
WantedBy=multi-user.target

当我启动系统时它似乎没有启动。干净启动后,这是我看到的状态:

systemctl status boondocks-agent
boondocks-agent.service - Boondocks agent
   Loaded: loaded (/lib/systemd/system/boondocks-agent.service; disabled; vendor preset: enabled)
   Active: inactive (dead)

我需要做什么才能使其在启动时自动启动?

答案1

你说,

在 YOCTO 中,相当于调用的systemctl enable是:

   SYSTEMD_SERVICE_${PN} = " \
       boondocks-agent.service
       "

我认为这相当于安装服务。要使该服务默认启用,您需要添加:

SYSTEMD_AUTO_ENABLE_${PN} = "enable"

答案2

您需要在启动时启用它:

systemctl enable boondocks-agent

答案3

我也有同样的问题。我添加了一项服务并期望计时器在启动时启动。我的计时器从未启动过,但我可以手动启动它并让它按预期永远运行。为了让我的 Yocto 项目创建并启动计时器,我添加了添加

SYSTEMD_SERVICE_${PN} = " logrotate.service logrotate.timer"

答案4

我最近在开发 Yocto 项目时遇到了同样的问题。我在 Yocto 食谱中明确指定了以下几行:

SYSTEMD_SERVICE:${PN} = "test.service"
SYSTEMD_AUTO_ENABLE:${PN} = "enable"

但是,直到我意识到我必须使我的配方显式地从 systemd 继承时,这些才有效。这是通过在我的食谱中添加以下行来完成的

inherit systemd

相关内容