For FreeBSD utvikles en ny systembehandler, rcd

Baptiste Daroussin, medlem av FreeBSD Core Team og forfatter av pakkebehandleren pkg, utvikler en ny systembehandler for FreeBSD – rcd. Systembehandleren rcd blir kalt av init-prosessen i stedet for /etc/rc, leser konfigurasjonsfiler for tjenester (/etc/rcd.d/*.ucl), bygger et avhengighetsdrev og starter tjenester parallelt så langt det lar seg gjøre, deretter overvåker den tjenestenes drift og gjenstarter dem dersom det er nødvendig.

Administrasjon av bakgrunnsprosesser og operasjoner med tjenester kan gjøres gjennom direkte kommandooverføring til en UNIX-socket eller ved hjelp av kommandolinjeverktøyet rctl. Unit-filer med tjenestekonfigurasjoner er formatert i UCL, som ligner på konfigurasjonsfiler for nginx og bind, med elementer for forenklet automatisering lån fra JSON. Det er mulig å lage maler for typiske unit-filer og skrive innebygde håndterere i Lua. Et eksempel på en unit-fil for å starte nginx: name = "nginx"; description = "Nginx HTTP Server"; type = "simple"; command = "/usr/local/sbin/nginx"; command_args = "-g 'daemon off;'"; provides = ["nginx", "http"]; requires = ["NETWORKING", "sshd"]; restart { policy = "always"; max_retries = 10; delay = 2000; backoff = "linear"; } process { user = "www"; group = "www"; cpuset = "0-3"; } rctl { memoryuse = { action = "deny"; amount = "2g"; }; pcpu = { action = "throttle"; amount = "80"; }; }

I stedet for å jobbe med PID-filer overvåkes aktiviteten til kjørende prosesser ved hjelp av beskrivelser som returneres av systemanropet pdfork(). Det er støtte for aktivering av tjenester bare ved å kontakte en nettverksocket, samt muligheten til å beskytte viktige tjenester mot tvungen avslutning i tilfelle systemet mangler minne. Det er mulig å oppdatere versjonen av bakgrunnsprosessen rcd i sanntid uten å miste tilstanden.

For å begrense de tilgjengelige ressursene for tjenesten brukes rctl, og for full isolasjon av tjenester støttes deres oppstart i jail-miljøer. Det er mulig å konfigurere tilgang til den kontrollende UNIX-socketen knyttet til bestemte tjenester. Overgang til søvnmodus støttes.

Systemmanageren er helt bakoverkompatibel med det eksisterende systemet for sekvensiell oppstart av tjenester rc.d og kan fungere uten endringer i eksisterende rc.d-scripter og konfigurasjonsfiler. Det er tilstrekkelig å installere rcd på et fungerende system, og etter omstart vil alt fortsette å fungere som før, med unntak av forkortet oppstartstid takket være parallellkjøring av tjenestene. Denne kompatibiliteten vil forenkle migrasjonen av systemer til rcd og gi mulighet for gradvis overføring av eksisterende rc.d-scripter til unit-filer.

For kompatibilitet med rc.d støttes en spesiell type enhet «legacy». Rcd skanner innholdet i /etc/rc.d/ og /usr/local/etc/rc.d/, analyserer hodene PROVIDE/REQUIRE/BEFORE/KEYWORD i skriptene, leser innstillingene fra rc.conf og bestemmer tilstanden for skriptenes oppstart, før den behandler hvert skript som en virtuell legacy-enhet. Når man bruker rcctl-kommandoen for å administrere slike virtuelle enheter, oversettes operasjoner til det gamle formatet; for eksempel vil kommandoen «rcctl reload sshd» føre til at «/etc/rc.d/sshd reload» blir utført.

Kilde: opennet.ru

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster