ΠΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ 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