使用 systemd,我如何识别服务中的冷启动与重启?

Using systemd, how can I identify cold boot vs reboot in a service?

我正在尝试在 Debian 上执行 systemd 服务。但是,我需要根据它是启动 'cold' 还是重启来改变逻辑。

我目前有一个 run-application.service 看起来像这样:

[Unit]
Description=Run application

[Service]
Type=oneshot
ExecStart=/usr/bin/run-application

[Install]
WantedBy=graphical.target

我希望程序在每次开机时都被调用,但是在重启的情况下需要修改内部逻辑。 easiest/best 实现此目标的方法是什么?

福煦将军说得对。创建一个新的 systemd 服务,reboot.target 需要它,并在文件系统的某处留下一个 'mark',可以在重启时获取。我不建议将它放在 /tmp 中,因为每次挂载 /tmp 时都会由 upstart 脚本清理 /tmp - 实际上,这意味着每次启动时。我会把它放在一个您知道会保留的目录中。这样,您就可以知道您是否来自重新启动,并且您可以合理地假设您在任何其他时间启动它是 'cold'。这将考虑到机器断电等情况