Un daemon este o aplicație care se execută și funcționează în fundal, și repornește automat după o cădere și are alte chifle frumoase.
De ce ești un simplu dezvoltator, trebuie să scrii un demon? Ei bine, de exemplu, să nu începeți să reporniți serverul de aplicații, astfel încât să nu se blocheze în terminal etc.
Ei bine, de exemplu, am instalat nginx. și vreau să includ în el o cerere scrisă în JRuby. Cel mai simplu mod de a rula aplicația pe JRuby este Rackup. Ei bine, sau orice WEBrick la toate. Nu este greu să îl conectați la nginx. Vom afla cum să vă asigurați că acest server nu trebuie pornit manual.
În OS X, demonii sunt controlați de utilitarul de lansare. După ubuntovskogo Upstart, ea a fost foarte mulțumită, așa că, de fapt, scriu acest articol.
Launchd distinge între daemonii de sistem și de utilizator. Ei au un set diferit de privilegii, de exemplu, daemonii definiți de utilizator nu pot deschide prize de pe portul "sistem", de exemplu, pe cel de-al 80-lea. Dar demonii utilizatorilor sunt ușor de instalat și lucrează fără sudo, ceea ce, în mod indirect, înseamnă aproape nimic pe mașina dvs. personală. Prin urmare, voi lua în considerare demonii utilizatorilor.
Pentru a controla lansarea, există un utilitar de lansare. Este familiar pentru utilizatorii Homebrew, deoarece solicită înregistrarea manuală a tuturor serviciilor instalate, de exemplu, DBMS. launctl ia informații despre servicii de la config, le vom scrie.
Configurarea fișierelor de lansare
Vom găsi un nume pentru serviciu. În mod tradițional, ele sunt numite în ordinea numelui din spatele domeniului, adică aș putea să-mi numesc me.shevtsov.leonid.jrubyapp.
/Library/LaunchAgents/me.shevtsov.leonid.jrubyapp.plist cu următorul conținut:
Încărcăm serviciul în sistem
Verificăm că serviciul este pornit:
Ce pot face cu un demon
Ce mi-a plăcut despre lansare - pe lângă pornirea daemonului la pornirea sistemului, îl puteți atârna pe o serie de alte evenimente. De exemplu, pentru a schimba directorul (WatchPaths) sau pentru a monta volumul (StartOnMount), în funcție de programul de tip crony (StartCalendarInterval). Și, observați, serviciul în sine știe ce programare să se numească - nu trebuie să scrie această configurație într-un fișier extern (adică crontab).
Mi sa părut că lansarea este mult mai convenabilă și mai flexibilă decât Upstart.
Formatul fișierelor de configurare este descris în manualul pentru launchctl.plist.
Repornirea daemonului
Conform documentației, după ce ați sunat (nu este recomandat) comanda de oprire, orice alt serviciu decât la cerere va fi repornit.