GNU Shepherd 0.9 init sistēmas izlaišana

Divus gadus pēc pēdējā nozīmīgā laidiena izveidošanas tika publicēts servisa pārvaldnieks GNU Shepherd 0.9 (agrāk dmd), ko GNU Guix System izplatīšanas izstrādātāji izstrādā kā alternatīvu SysV-init inicializācijas sistēmai, kas atbalsta atkarības. . Shepherd vadības dēmons un utilītas ir rakstītas Guile valodā (viena no shēmas valodas implementācijām), kas tiek izmantota arī pakalpojumu palaišanas iestatījumu un parametru definēšanai. Shepherd jau tiek izmantots GuixSD GNU/Linux izplatīšanā, un tas ir paredzēts lietošanai arī GNU/Hurd, taču tas var darboties jebkurā ar POSIX saderīgā operētājsistēmā, kurai ir pieejama Guile valoda.

Shepherd pakalpojumu palaišanas un apturēšanas darbu veic, ņemot vērā pakalpojumu savstarpējās attiecības, dinamiski identificējot un iedarbinot pakalpojumus, no kuriem atkarīgs izvēlētais pakalpojums. Shepherd atbalsta arī konfliktu atklāšanu starp pakalpojumiem un neļauj tiem darboties vienlaikus. Projektu var izmantot gan kā galveno inicializācijas sistēmu (init ar PID 1), gan atsevišķā formā atsevišķu lietotāju fona procesu vadīšanai (piemēram, lai palaistu tor, privoxy, mcron utt.) ar izpildi ar tiesībām no šiem lietotājiem.

Galvenie jauninājumi:

  • Pagaidu pakalpojumu (pārejas) jēdziens ir ieviests, automātiski atspējots pēc pabeigšanas procesa pārtraukšanas vai “stop” metodes izsaukšanas dēļ, kas var būt nepieciešams sintezētiem pakalpojumiem, kurus pēc izslēgšanas nevar restartēt.
  • Lai izveidotu inetd līdzīgus pakalpojumus, ir pievienota procedūra “make-inetd-constructor”.
  • Lai izveidotu pakalpojumus, kas tiek aktivizēti tīkla darbības laikā (systemd socket aktivizācijas stilā), ir pievienota procedūra “make-systemd-constructor”.
  • Pievienota procedūra pakalpojuma palaišanai fonā - “start-in-the-background”.
  • Rutīnai "make-forkexec-constructor" tika pievienoti parametri ":supplementary-groups", "#:create-session" un "#:resource-limits".
  • Iespējota darbība bez bloķēšanas, gaidot PID failus.
  • Pakalpojumiem bez parametra “#:log-file” tiek nodrošināta izvade uz syslog, savukārt pakalpojumiem ar parametru #:log-file žurnāls tiek ierakstīts atsevišķā failā, norādot ierakstīšanas laiku. Nepriviliģētā ganu procesa žurnāli tiek glabāti direktorijā $XDG_DATA_DIR.
  • Atbalsts būvēšanai ar Guile 2.0 ir pārtraukts. Problēmas, lietojot Guile versijas 3.0.5-3.0.7, ir atrisinātas.
  • Lai darbotos, tagad ir nepieciešama Fibres bibliotēka 1.1.0 vai jaunāka versija.

Avots: opennet.ru

Pievieno komentāru