Van egy systemd service (resilio sync), amit nem szeretnék futva hagyni, ha nincs hálózat. Azaz ideális esetben ha leállítom a wifit, akár úgy, hogy magát a wifit kapcsolom le, akár úgy, hogy repülőmódba váltok, akkor álljon le, illetve induljon el, ha ezeket visszakapcsolom.
Amit találtam:
BindsTO=sys-subsystem-net-devices-wlan0.device
Ez vicces, a wlan0 mindig aktív, még repülőmódban is, de ennek még lehet értelmes oka.
PropagatesStopTo= StopPropagatedFrom=
Nem találtam olyat, amire ráakaszthatnám (ezt kifelejtettem).
A systemctl --all egyezik, ha offline a masina, ha nem.
systemd-rfkill
Ez a service aktív, amikor le van lőve a wifi. Arra látok esélyt, hogy valahogy el lehet magyarázni a systemd-nek, hogy ennek pont az ellentettje kell, azaz ha ez fut, akkor a másik álljon, és vice versa. de nekem nem ment
Na, ezt benéztem, csak egy ideig aktív.
Conflicts=
Ez meg másra való.
systemctl list-units --type=socket
Nem találtam hasznos socketet.
StopCondition
Na, ilyen nincs. ExecCondition van, de stopra nincs ilyen.
dbus
Gondoltam hogy valami dbus eventre lehetne figyelni, de nem találtam erre megoldást.
Fontos, hogy a gyári service-ket nem akarom módosítani (sőt, a resilio sync eleinte user unitként futott, de ha jól értem, akkor végképp esélytelen, hogy a system unitokra dependáljon).
Illetve ideális esetben a hálózat levágása illedelmesen megvárná előbb hogy a resilio sync megáll (pár másodperc).
Amit nem szeretnék, az a taknyolás, pl. hogy crontabból pingetni, és stop-start. Ha már a systemd annyira csodálatos, akkor azzal szeretnén megoldani, és nem az elavult (lol) módszerekkel.
Ha valakinek van jó ötlete, ne tartsa magában, de ha lehet, akkor ne a google első találata legyen, hogy "eztpóbáldki".