Hlavní navigace

Názor k článku Nebojte se systemd: co to je a co umí? od BS - Zdravím, Nerad bych se přímo zapojoval do diskuze jestli...

  • Článek je starý, nové názory již nelze přidávat.
  • 25. 5. 2016 21:51

    BS (neregistrovaný)

    Zdravím,

    Nerad bych se přímo zapojoval do diskuze jestli systemd je nebo není správná cesta, protože podle mě to záleží především na konkrétním nasazení, ale neodpustím si poznámku k článku jako takovému.

    Mám pocit, že autor má značný bordel v představě toho, co je to init, init script a daemon. Předně daemon je proces, který nemá kontrolní terminál a není session leader (což znamená, že kontrolní terminál jen tak nedostane), to zajišťuje, že mu žádný jiný proces nebo uživatel nekecá do života. Daemon je jednoduše řečeno proces, který se o sebe musí postarat sám.

    U sysV initu jsou v /etc/init.d (d zmananá directory, ne daemon) uloženy skripty pro spouštění daemonů, nikoli daemoni, tyto skripty se ani nijak nemají starat o to, aby se daemon stal daemonem . To si daemon zajistí sám (třeba libc funkce int daemon(int,int)), stejně tak si dobře napsaný daemon sám vytvoří pidfile, který pak slouží k jeho zastavení. Hlavní smyslem init scriptů je ověřit, že jsou v pořádku všechny náležitosti nutné ke spuštění daemona, tím nemyslím závislosti na jiných daemonech, ale třeba to, že má validní konfigurační soubor, což je také důvod proč i u systemd stejně musí být často něco doskriptováno.

    Init scripty velmi často řeší i věci, které s daemony nesouvisí, třeba jako mount disků a celkově inicializaci systému, za kterou se neskrývá žádná služba, ale jednorázová sekvence příkazů. Z pohledu určité abstrakce v tom, ale není velký rozdíl. Pokud je daemon opravdu správně napsaný (tedy zcela samostatný), není principiálně rozdíl mezi službou typu přístup na disk a typu ssh. A sysV init se tak chová, nečeká, že daemon umře, stejně jako nečeká, že umře disk, inicializuje sytém a tím končí.

    SystemD pro mě především redefinuje to co je daemon:
    https://www.freedesktop.org/software/systemd/man/daemon.html
    a do popředí tlačí dohled nad daemony, zatímco klasický daemon je definovaný právě tím, že nad ním dohled není. Procesy s dohledem (uživatel), mají kontrolní terminál.

    Je to úplně jiná filozofie, nechci ji hodnotit, ale myslím si, že článek o systemd by právě toto uvádět měl.
    Osobně zastávám názor, že dohled není špatný pro testy (pokud je třeba v produkci, je něco moc špatně), ale rozhodně si nemyslím, že by měl mít pid 1. To také není v článku podchyceno, pid 1 je více než číslo, to je Ten Proces, který jako jediný musí žít, aby nepanikařilo jádro, a je to Ten Proces, který když hacknu, tak mám celý systém a proto by měl být každý řádek jeho kódu velmi dobře zdůvodněný.