De release van de service manager s6-rc 0.7.0.0 is gepubliceerd, die bedoeld is voor het beheer van de uitvoering van initialisatiescripts en services. Het ondersteunt het volgen van de afhankelijkheidsboom en de automatische start of stop van services om de opgegeven toestand te bereiken. De s6-rc toolbox kan worden gebruikt in zowel initialisatiesystemen als voor het organiseren van de start van willekeurige services in reactie op gebeurtenissen die veranderingen in de systeemstatus weerspiegelen. Het systeem ondersteunt initialisatiescripts die compatibel zijn met sysv-init en kan afhankelijkheidsinformatie importeren van sysv-rc of OpenRC. De code is geschreven in de programmeertaal C en wordt verspreid onder de ISC-licentie.
De service manager s6-rc omvat een verzameling hulpmiddelen voor het starten en stoppen van langdurig draaiende processen (demonen) of direct eindigende initialisatiescripts. Tijdens de werking wordt parallelle uitvoering van niet-overlappende services gegarandeerd, en de volgorde van de uitvoering van scripts is herhaalbaar bij verschillende uitvoeringen. Alle statuswijzigingen worden verwerkt met inachtneming van afhankelijkheden; bijvoorbeeld, wanneer een bepaalde service wordt gestart, worden de noodzakelijke afhankelijkheden voor de werking ervan automatisch gestart, en bij het stoppen worden ook de afhankelijke services gestopt.
In tegenstelling tot andere service managers ondersteunt s6-rc proactieve (in offline-modus) opbouw van de afhankelijkheidsgrafiek voor de bestaande set services, wat het mogelijk maakt om resources intensieve afhankelijkheidsanalyses apart uit te voeren, en niet tijdens het opstarten of wijzigen van de toestand. Daarnaast is het systeem niet monolithisch en is het verdeeld over een reeks afzonderlijke en vervangbare modules, waarvan elke module, in overeenstemming met de Unix-filosofie, slechts een specifieke taak oplost. Het s6-rc-project volgt de minimalistische filosofie (bevat niets overbodigs) en verbruikt minimaal resources.
In plaats van opstartniveaus (runlevel) biedt s6-rc het concept van bundles, waarmee services op willekeurige criteria en oplossingen kunnen worden gegroepeerd. Voor een efficiëntere werking wordt een gecompileerde afhankelijkheidsdatabase gebruikt, die wordt aangemaakt door de utility s6-rc-compile op basis van de inhoud van directories met bestanden voor het starten/stopsen van services. Voor het parseren en manipuleren van de database zijn de utilities s6-rc-db en s6-rc-update beschikbaar. De s6-tools worden gebruikt in de distributies Obarun, Adelie en Artix, en kunnen optioneel worden toegepast in Gentoo, Void en Alpine.
Het project ontwikkelt ook aanvullende pakketten die s6-rc aanvullen:
- s6 — utilities voor het monitoren van processen en het beheren van processen (vergelijkbaar met daemontools en runit). Het ondersteunt mogelijkheden zoals het opnieuw opstarten van processen na een noodstop, het starten van een handler (activering van een service) bij toegang tot een netwerkpoort, het loggen van gebeurtenissen (vervanging van syslogd) en gecontroleerde toekenning van extra privileges (vergelijkbaar met sudo).
- s6-linux-init — implementatie van een init-proces voor besturingssystemen op basis van de Linux-kernel, gebruikt voor het creëren van initiële systemen, waarin de s6 en s6-rc pakketten worden gebruikt voor het beheer van services en scripts.
- s6-networking — een set utilities voor het creëren van netservices, vergelijkbaar met ucspi.
- s6-frontend — een wrapper voor het opnieuw creëren van de functionaliteit van daemontools en runit bovenop s6.
- s6-portable-utils — een set typische Unix-utilities, zoals cut, chmod, ls, sort en grep, geoptimaliseerd voor een laag gebruik van middelen en geleverd onder de ISC-licentie.
- s6-linux-utils — een set utilities die aan Linux zijn gebonden, zoals chroot, freeramdisk, logwatch, mount en swapon.
- mdevd — een gebeurtenismanager (vergelijkbaar met udevd), bedoeld voor het afhandelen van hotplugging van apparaten. Mdevd is in overeenstemming met mdev uit Busybox volgens de configuratie.
- bcnm — een netwerkconfigurator met mogelijkheden voor het instellen van Wi-Fi aan de klantzijde.
- execline — een script-taal.
- skalibs — een bibliotheek voor het creëren van veilige systeemtoepassingen in de C-taal.
- s6-dns — een set clientbibliotheken en utilities die de standaard DNS-utilities van BIND en djbdns vervangen.
- dnsfunnel — leidt lokale DNS-verzoeken door naar extern server (DNS-forwarder).
- shibari — een eenvoudige DNS-server.
- tipidee — een HTTP-server met ondersteuning voor HTTP/1.1.
In de nieuwe versie van s6-rc en de bijbehorende utilities:
- De opdracht «s6-rc reload» is geïmplementeerd om langdurig werkende services opnieuw te starten.
- Een beheersbestand reload-signal is toegevoegd, dat het signaal bepaalt dat naar het proces wordt verzonden voor herstarten (standaard SIGHUP).
- De utiliteit s6-rc-bundle is verwijderd - wijzigingen in bundle-verzamelingen zonder recompilatie worden niet langer ondersteund.
- Een nieuw formaat voor de interne database is voorgesteld (voor de update is recompilatie en het starten van de utiliteit s6-rc-format-upgrade vereist).
- Er is gezorgd voor correcte verwerking van de situatie van herstart van de utiliteit s6-rc-init voor het initialiseren van services en is de verwerking van systeemfouten verbeterd.
- De utiliteit s6-rc-set-change heeft opties toegevoegd: -I/-i voor het weergeven van een waarschuwing of het beëindigen met een fout bij het ontdekken van een conflicterende afhankelijkheid; -P/-p voor het uitschakelen/inschakelen van automatische resolutie van afhankelijkheidsconflicten bij het wijzigen van de status van services.
- De verouderde optie «-f» is verwijderd.
- De utiliteit s6 heeft het commando s6-svscanboot toegevoegd voor het omleiden van logs van de supervisor s6-svscan naar s6-log wanneer deze niet onder PID 1 draait.
- De optie «s6-svc -l» is geïmplementeerd voor het verzenden van een signaal voor herstart.
- De gebruikersinterface s6-frontend heeft ondersteuning gekregen voor opties en commando's: «s6 —user» (voor het werken met gebruikersservices), «s6 live reset», «s6 apply», «s6 enable|disable|start|stop|kill|apply», «s6 live stop —clean».
- In de http-server tipidee is ondersteuning voor FastCGI geïmplementeerd en is de optie cgi_pass_authorization toegevoegd.
Bron: opennet.ru
