Portál AbcLinuxu, 14. května 2025 23:20
v kostce - přemýšlím, jak bych měl definovat službu v systemd tak, aby čekala na inicializaci spuštěné aplikace a teprve poté byly aktivovány další jednotky, které na službě závisí. Příklad: Aplikace se po spuštění procesu nějakou dobu (cca 40 sec) inicializuje a když má hotovo, začne naslouchat na TCP portu a obsluhovat požadavky.
Pokud aplikaci spustím jako service v systemd, tak ten jí považuje za aktivní v okamžiku, kdy spustí její proces, a dál se o to nezajímá. Ostatní systemd služby, které jsou na ní závislé, těch 40 sekund zbytečně hází chyby.
Jde mi tedy o to, jak definovat, aby byla jednotka aktivní např. až při dostupnosti portu nebo existenci "ready-flag" souboru, apod.
Napadají mě jen dvě neelegantní řešení:
Napadá někoho, jak toto řešit? V upstart bylo možné emitovat signály, kterými jsem toto vyřešil.
Řešení dotazu:
dbus
nebo notify
, které dají systemd
vědět, že nastartovaly, přes dbus
nebo přes sd_notify
.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.