systemd 单元文件:如何依赖一项服务或另一项服务?

systemd 单元文件:如何依赖一项服务或另一项服务?

我正在编写一个需要=服务 A 或服务 B 的单元文件,但我不在乎是哪个。我该如何指定这一点?

答案1

最简单的方法是添加 A 或 B 的测试:ExecStartPre

[Unit]
Description=this unit needs A or B

[Service]
ExecStartPre=/bin/bash -c '/usr/bin/systemctl is-active --quiet A || /usr/bin/systemctl is-active --quiet B'
ExecStart=/the/actual/command

另一种方法是将 A 或 B 作为单独的服务单元进行测试:

[Unit]
Description=this service is active if A or B are present

[Service]
[Unit]                                                                                                                                                                                                     
Description=test for A or B                                                                                                                                                                                
                                                                                                                                                                                                           
[Service]                                                                                                                                                                                                  
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/bash -c '/usr/bin/systemctl is-active --quiet A || /usr/bin/systemctl is-active --quiet B'

然后将依赖项添加A_B_checker.service到主服务。

相关内容