在 Raspberry PI(运行 raspbian)上,我需要在shutdown / poweroff时运行脚本,而不是在 reboot时运行。
我的第一次尝试是将服务定义如下:
[Unit]
Description=Power off service
[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/usr/local/bin/poweroff.sh
[Install]
WantedBy=multi-user.target
这有效,但脚本也在重新启动时运行。所以我尝试将它安装到不同的目标:
[Install]
WantedBy=shutdown.target halt.target
但是在此更改之后,脚本根本不会运行。
定义应在关机时执行的操作的正确方法是什么?
根据我在网上收集的信息,最好的选择是
Conflicts=reboot.target
在单元文件([Unit]
部分)中,然后在脚本中执行以下内容:如果
reboot.target
计划启动,则为重新启动。否则,它不是。如果命令“成功”,则系统正在重新启动。否则,它正在关闭。你可以像这样使用它:丹尼尔的回答解决了问题中的问题。但这仍然不是我所需要的:脚本调用得太早了,我需要尽可能晚地执行它(脚本实际上使用连接到 RPi
GPIO
引脚的继电器关闭电源)在投入更多时间后,我找到了更简单的解决方案,它完全符合我的要求:
/etc/systemd/system/systemd-poweroff.service.d
如果目录不存在则创建目录.conf
文件:在这种方法中,无需添加新服务