En ny systemhanterare, rcd, utvecklas för FreeBSD.

Baptiste Daroussin, medlem i FreeBSD Core Team och författaren till pakethanteraren pkg, utvecklar en ny systemhanterare för FreeBSD—rcd. Systemhanteraren rcd anropas av init-processen istället för /etc/rc, läser tjänstkonfigurationsfiler (/etc/rcd.d/*.ucl), bygger ett beroendeträd och startar tjänster parallellt när det är möjligt. Den övervakar sedan tjänsterna och startar om dem om det behövs.

Kontroll över bakgrundsprocessen och operationer med tjänster kan utföras genom att direkt skicka kommandon till en UNIX-socket eller använda kommandoradsverktyget rctl. Enhetsfiler med tjänstparametrar formateras i UCL, vilket liknar formatet för nginx och binder konfigurationsfiler med element lånade från JSON för att förenkla automatiserad bearbetning. Det är möjligt att skapa mallar för typiska enhetsfiler och skriva inbyggda hanterare i Lua. Ett exempel på en enhetsfil för att starta nginx: name = "nginx"; description = "Nginx HTTP Server"; type = "simple"; command = "/usr/local/sbin/nginx"; command_args = "-g 'daemon off;'"; provides = ["nginx", "http"]; requires = ["NÄTVERK", "sshd"]; restart { policy = "always"; max_retries = 10; delay = 2000; backoff = "linear"; } process { user = "www"; group = "www"; cpuset = "0-3"; } rctl { minnesanvändning = { action = "neka"; mängd = "2g"; }; pcpu = { action = "gasreglering"; mängd = "80"; }; } ...

Istället för att använda PID-filer spåras aktiviteten hos pågående processer med hjälp av deskriptorer som returneras av systemanropet pdfork(). Det finns stöd för att aktivera tjänster endast när en nätverkssocket används och möjligheten att skydda viktiga tjänster från tvångsavslutning vid lågt minne. Bakgrundsprocessen rcd kan uppdateras direkt utan att förlora tillstånd.

rctl används för att begränsa de resurser som är tillgängliga för en tjänst, och tjänster kan köras i jailed-miljöer för fullständig isolering. Åtkomst till UNIX-kontrollsockeln kan konfigureras för enskilda tjänster. Viloläge stöds.

Systemhanteraren är helt bakåtkompatibel med det befintliga sekventiella startsystemet för rc.d-tjänsten och kan användas utan att ändra befintliga rc.d-skript och konfigurationsfiler. Installera bara rcd på ett körbart system, och efter en omstart kommer allt att fortsätta fungera som tidigare, med undantag för minskade starttider på grund av parallell tjänststart. Denna kompatibilitet kommer att förenkla migreringen av system till rcd och möjliggöra gradvis konvertering av befintliga rc.d-skript till enhetsfilformat.

För kompatibilitet med rc.d stöds en speciell "legacy" enhetstyp. Rcd skannar innehållet i /etc/rc.d/ och /usr/local/etc/rc.d/, analyserar PROVIDE/REQUIRE/BEFORE/KEYWORD-rubriker i skript, läser rc.conf-inställningar och fastställer skriptets körningsstatus, och bearbetar sedan varje skript som en äldre virtuell enhet. När rcctl-kommandot används för att hantera sådana virtuella enheter översätts operationerna till det äldre formatet; till exempel, om "rcctl reload sshd" körs, körs "/etc/rc.d/sshd reload".

Källa: opennet.ru

Köp pålitlig hosting för webbplatser med DDoS-skydd, VPS VDS-servrar 🔥 Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster