systemd 服务“安装程序”,重新安装在这种情况下不会启动的其他后续服务

systemd 服务“安装程序”,重新安装在这种情况下不会启动的其他后续服务

原因可能是什么?为什么它不起作用?如何解决?

我有一个“安装程序”和几个其他“固件”服务,它们已注册到 systemd,通常在 Linux 启动时启动。通常“安装程序”服务在其脚本中没有任何操作。

安装服务:

[Unit]
Description=INSTALLER
Before=network-pre.target

[Service]
ExecStart=/opt/product/sbin/do-installer.sh
StandardOutput=journal+console
Type=oneshot

[Install]
WantedBy=multi-user.target

典型的固件服务:

[Unit]
Description=Firmware
Wants=network.target multi-user.target systemd-hostnamed.service connman.service installer.service
After=network.target multi-user.target systemd-hostnamed.service connman.service installer.service

[Service]
ExecStart=/opt/product/sbin/firmware.sh
StandardOutput=journal+console

[Install]
WantedBy=multi-user.target

固件更新机制的工作方式是,在启动过程中,“安装程序”服务有时会检测到有事要做,然后它会立即调用其固件更新脚本,该脚本会在网络启动之前执行并完成。固件更新意味着卸载并安装固件服务。

我遇到的问题是,重新安装后固件服务无法启动。我总是必须重新启动才能启动新安装的固件。我不明白原因。

答案1

现在我找到了一个解决方案:我的脚本 do-installer.sh 不仅要调用

opkg install ... all the stuff ...
systemctl start firmware1.service &
systemctl start firmware2.service &
...
systemctl start firmwareN.service &

此外,这两个命令也解决了我的问题:

systemctl daemon-reload
systemctl reset-failed

相关内容