Povedal by som, že ak netušíte, prečo démonizácia začína forkom, bude technologická diskusia s Vami zážitkom ktorému by som sa radšej vyhol.
Já jsem ale nepsal, že netuším, proč démonizace začíná forkem – naopak po pořádném přečtení mého komentáře zjistíte, že to dobře vím. Psal jsem o tom, že je špatně, že se proces démonizuje, aby se dostal z dosahu svého rodiče, a běží pak způsobem, při kterém se velmi těžko ladí a vůbec zjišťuje jeho stav. Považuju za normální, že proces spustím, proces vypisuje informace na standardní výstup a chyby na standardní chybový výstup, já se na ně kdykoli můžu podívat, rodičovský proces může ten spuštěný proces ovládat tak, že mu pošle signál, a také se rodičovský proces dozví o ukončení procesu. Takhle to funguje, když službu spustím z shellu, a považuju za správné, že to úplně stejně funguje i tehdy, když proces spustím přes správce služeb.
Rovnak tak odporúčam premýšľať prelúskať si manuál k systemd.service, zistíte tak, ako veľmi sa môže líšiť spustenie pod SystemD od normálneho. Len tie premenné prostredia vie ovplyvniť asi 20 nastavení. Vedľa nich existujú i vlastné premenné SystemD, nastavenia plátne i pre iné typy jednotiek a premenné popisujúce predávané file desktriptory.
Abych pravdu řekl, nikdy jsem neřešil problém, že by služba používala nějaké proměnné prostředí, které defaultně nastavuje systemd. Naopak už jsem řešil spoustu chyb v init skriptech pro SysVinit, kdy při spuštění z shellu skript fungoval, ale pak při spuštění při startu nefungoval, protože byla jinak nastavená proměnná PATH nebo HOME.
Předávané deskriptory jsou věc navíc, SysVinit nic takového neuměl.
Zkuste si třeba ladit nějaké chyby při startu Apache. Když spustíte v shellu ten příkaz, který najdete v init skriptu, Apache se vám odforkuje a nevíte nic. Když ho chcete spustit v shellu, musíte použít parametr -x
, a to najednou Apache dělá úplně něco jiného, než když běží z init skriptu. Ono je vůbec úžasné celé apachectl
. Proč to programují autoři webového serveru? Neměl by se o tohle náhodou starat správce služeb?