Release av GNU Shepherd 0.9.2 init-systemet

GNU Shepherd 0.9.2 service manager (tidigare dmd) har publicerats. Den utvecklas av utvecklarna av GNU Guix System-distributionen som ett alternativ till initialiseringssystemet SysV-init som stöder beroenden. Kontrolldaemonen och verktygen för Shepherd är skrivna i språket Guile (en av implementationerna av språket Scheme), vilket också används för att definiera inställningar och parametrar för att starta tjänster. Shepherd används redan i GuixSD GNU/Linux-distributionen och är också avsedd att användas i GNU/Hurd, men kan fungera i alla POSIX-kompatibla operativsystem för vilka språket Guile är tillgängligt.

Shepherd gör arbetet med att starta och stoppa tjänster genom att ta hänsyn till relationerna mellan tjänster, dynamiskt identifiera och starta de tjänster som den valda tjänsten är beroende av. Shepherd stöder också att upptäcka konflikter mellan tjänster och förhindra att de körs samtidigt. Projektet kan användas både som huvudinitieringssystem (init med PID 1), och i en separat form för att hantera bakgrundsprocesser för enskilda användare (till exempel för att köra tor, privoxy, mcron, etc.) med exekvering med rättigheterna av dessa användare.

Bland ändringarna:

  • Filbeskrivningar som används i Shepherd är nu markerade med flaggan O_CLOEXEC (close-on-exec), istället för att stängas omedelbart när "exec-command" körs, vilket gör att beskrivningar kan skickas till tjänster som startats indirekt av "exec-command".
  • Klientanslutningar hanteras nu i ett icke-blockerande läge, vilket förhindrar att Shepherd hänger sig när ett ofullständigt kommando skickas.
  • Säkerställde att en katalog för loggfiler som definierats i inställningen "loggfil" skapas om den inte finns.

Källa: opennet.ru