我有一个 systemd 单元 A (type=oneshot),在某些情况下会触发系统重新启动。
我还有其他 systemd 单元 B 和 C(type=simple),它们已经具有“After=A.service”条件,可以让它们在 A 完成后启动。
当 A 触发重新启动时,我不希望 B 和 C 启动。我在设置中观察到,B 和 C 在 A 完成时启动,然后由于重新启动而立即终止。
我已经尝试让 A 在触发重新启动之前创建一个临时文件(/tmp/foo),并在 B 和 C 中放置 ConditionPathExists=!/tmp/foo 条件,但是这个解决方案似乎不起作用,B 和 C即使文件被创建也会启动。
我怎样才能获得这种行为?
答案1
这更像是一种黑客行为,而不是真正的解决方案,您可以尝试在重新启动后将睡眠置于 A 中:
sleep 60
如果系统重新启动时该服务继续运行,则其他服务不应启动,并且 a 会因重新启动而停止。
虽然不确定这是否会延迟关机,但我想你可以找到足够的时间睡觉。