Это b.service
:
[Unit]
Description=b.service
ConditionPathExists=/usr/sbin/b
Requires=a.service
BindsTo=a.service
After=a.service
[Service]
ExecStart=/usr/sbin/b
Это делает почти все, что я хочу:
Хочу добавить оставшуюся зависимость: если b.service останавливается, то a.service останавливается, без изменения служебного файла a.service, если возможно.
Теперь я дополнительно создал переопределение для a.service в /etc/systemd/system/a.service.d/override.conf который определяет:
[Unit]
BindsTo=b.service
Таким образом, полная зависимость a тогда и только тогда, когда b выполняется.