ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ систСмный ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ GNU Shepherd 1.0.0

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ систСмный ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ GNU Shepherd 1.0.0 (Π±Ρ‹Π²ΡˆΠΈΠΉ dmd), ΡΠΎΡ‡Π΅Ρ‚Π°ΡŽΡ‰ΠΈΠΉ возмоТности систСмы ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ инструмСнтария для управлСния систСмными сСрвисами. ΠžΡ‚ΠΌΠ΅Ρ‡Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ присвоСниС Π½ΠΎΠΌΠ΅Ρ€Π° 1.0 послС 21 Π³ΠΎΠ΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠ·Π½Π°ΠΌΠ΅Π½ΠΎΠ²Π°Π»ΠΎ ΠΏΡ€ΠΈΠ·Π½Π°Π½ΠΈΠ΅ готовности ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ Π΅Π³ΠΎ соотвСтствия трСбованиям ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ соврСмСнных систСм ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ сСрвисных ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠ².

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ развиваСтся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ дистрибутива GNU Guix System Π² качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ систСмС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ SysV-init, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ зависимости. Π£ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Π΄Π΅ΠΌΠΎΠ½ ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ Shepherd написаны Π½Π° языкС Guile (ΠΎΠ΄Π½Π° ΠΈΠ· Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ языка Scheme), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для опрСдСлСния настроСк ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² запуска сСрвисов. Shepherd ΡƒΠΆΠ΅ примСняСтся Π² дистрибутивС GNU Guix System ΠΈ Π½Π°Ρ†Π΅Π»Π΅Π½ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π° использованиС Π² GNU/Hurd, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² любой POSIX-совмСстимой ОБ, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ доступСн язык Guile.

Shepherd выполняСт Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎ запуску ΠΈ остановкС сСрвисов, учитывая взаимосвязь ΠΌΠ΅ΠΆΠ΄Ρƒ сСрвисами, динамичСски опрСдСляя ΠΈ запуская сСрвисы, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… зависит Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ сСрвис. Shepherd Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρƒ сСрвисами ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΡ… ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π² Ρ€ΠΎΠ»ΠΈ основной систСмы ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (init c PID 1), Ρ‚Π°ΠΊ ΠΈ Π² обособлСнном Π²ΠΈΠ΄Π΅ для управлСния Ρ„ΠΎΠ½ΠΎΠ²Ρ‹ΠΌΠΈ процСссами ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для запуска tor, privoxy, mcron ΠΈ Ρ‚.ΠΏ.) с Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ с ΠΏΡ€Π°Π²Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Π½ΠΎΠ²ΡˆΠ΅ΡΡ‚Π²Π° Π² GNU Shepherd 1.0.0:

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° сСрвисов, пСриодичСски Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΠ»ΠΈ ΠΊΠΎΠ΄ Π½Π° языкС Scheme ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΡŽ.
  • Π’ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ «herd status SERVICE» Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΏΠΎΠΊΠ°Π· высокоуровнСвой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ сСрвисах, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ PID, ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈ адрСса Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ сСтСвыС запросы, Π° Ρ‚Π°ΠΊΠΆΠ΅ сводки Π½Π΅Π΄Π°Π²Π½ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… Π² Π»ΠΎΠ³ сообщСний. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, данная ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹Π΅ ΠΊ сСрвису ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ дСйствия ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‰Π΅Π³ΠΎ сСрвиса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½Ρ‘Π½ послС пСрСзапуска Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ сСрвиса.
  • Команда «herd status root» Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ являСтся синонимом «herd status» ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ свСдСния ΠΎ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΌ процСссС shepherd.
  • Для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Linux прСдоставлСна Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ пСрСзапуска с использованиСм ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° kexec («reboot —kexec») для Π·Π°ΠΌΠ΅Π½Ρ‹ ядра Linux Π±Π΅Π· физичСской ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ сСрвис log-rotation, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠΉ Π·Π° ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ€ΠΎΡ‚Π°Ρ†ΠΈΡŽ Π»ΠΎΠ³ΠΎΠ² ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… Π»ΠΎΠ³ΠΎΠ².
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ сСрвис system-log, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² качСствС Π·Π°ΠΌΠ΅Π½Ρ‹ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы syslogd.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ сСрвис timer для запуска ΠΊΠΎΠΌΠ°Π½Π΄ Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ врСмя, ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΎΠΉ «at». НапримСр, «herd schedule timer at 07:00 — mpg123 alarm.mp3».
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ сСрвис transient для запуска ΠΊΠΎΠΌΠ°Π½Π΄ Π² Ρ„ΠΎΠ½Π΅, ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΎΠΉ systemd-run. НапримСр, «herd spawn transient -d $PWD — make -j4».

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru