Autor | Gerrita Pape |
---|---|
Pierwsze wydanie | 10 lutego 2004[1] |
Aktualna wersja stabilna | 2.1.2[2] |
Język programowania | C, Shell |
System operacyjny | Linux, FreeBSD, OpenBSD, NetBSD, macOs, Solaris |
Rodzaj | init |
Licencja | New BSD License |
Strona internetowa | smarden.org/runit/ |
runit – program do zarządzania usługami dla systemów operacyjnych typu Unix, który inicjuje (uruchamia), nadzoruje i kończy procesy w całym systemie operacyjnym. Runit jest reimplementacją zestawu narzędzi do nadzorowania procesów daemontools[3], który działa na wielu systemach operacyjnych opartych na jądrze Linux, a także na systemach operacyjnych BSD i Solaris. Runit umożliwia równoległe uruchamianie usług systemowych, co może przyspieszyć czas uruchamiania systemu operacyjnego.[4]
Działając jako init, Runit jest bezpośrednim lub pośrednim przodkiem wszystkich innych procesów. Jest to pierwszy proces uruchamiany podczas uruchamiania systemu i trwa do momentu wyłączenia systemu. Jest często używany z innymi systemami inicjującymi jako oddzielny menedżer usług. W roli menedżera usług może być używany przez nieuprzywilejowanych użytkowników do organizowania usług osobistych, a także przez roota do zarządzania usługami, którymi w inny sposób nie zarządzałby aktualnie używany system init.
Runit koncentruje się na byciu małą, modułową i przenośną bazą kodu. W roli inicjującej Runit jest podzielony na trzy etapy: jednorazowa inicjalizacja, nadzór procesu oraz zatrzymanie lub ponowne uruchomienie. Chociaż pierwszy i trzeci etap muszą być dostosowane do konkretnego systemu operacyjnego, na którym działają, drugi etap można przenosić na wszystkie systemy operacyjne zgodne z POSIX.[5] Te 3 etapy można skonfigurować za pomocą 3 plików wykonywalnych (zwykle są to skrypty powłoki) o nazwach odpowiednio 1, 2 i 3.
Etap 2 zwykle wywołuje plik binarny o nazwie runsvdir, który jest procesem odpowiedzialnym za globalne zarządzanie demonami: dla każdego demona, który znajdzie w folderze przekazanym mu przez argument, następnie tworzy indywidualnego watchdoga, każdy z nich uruchamia demona (i program rejestrujący usługę ostatecznie z nim powiązaną) i uruchamia ją ponownie, jeśli nie odpowiada. W przypadku dodania lub usunięcia demona, zabija on watchdoga lub uruchamia nowego. Pliki wykonywalne o określonych nazwach służą do opisu różnych faz życia demona (uruchamianie, sprawdzanie, zakończenie), mogą przechwytywać sygnały wysyłane i uruchamiane przez określone skrypty, jeśli takie istnieją, a także tworzone są nazwane potoki w celu odsłonięcia interfejsów do kontrolowania demona.
Zarządzanie serwisami uruchomionymi przez runit umożliwia komenda sv.
Runit może być używany jako zamiennik[6] dla sysvinit lub jako nadzorca usługi (z sysvinit jako procesem nadrzędnym PID 1, który uruchamia procesy określone w pliku inittab lub innym systemie init).[7]
Runit jest domyślnym systemem inicjującym:
Runit jest „oficjalnie” dostępnym systemem init dla: