ΠΠ²Π΅ Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΡΠ»Π΅Π΄ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡ Π·Π½Π°ΡΠΈΡΠ΅Π»Π΅Π½ ΡΠ΅Π»ΠΈΠ·, ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π° Π΅ Π²Π΅ΡΡΠΈΡΡΠ° 0.9 Π½Π° ΡΠ΅ΡΠ²ΠΈΠ·Π½ΠΈΡ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡ GNU Shepherd (Π±ΠΈΠ²Ρ dmd), ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π° ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π° Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π° GNU Guix System ΠΊΠ°ΡΠΎ Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° Π½Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° SysV-init, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°ΡΠ° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ. Π£ΠΏΡΠ°Π²Π»ΡΠ²Π°ΡΠΈΡΡ Π΄Π΅ΠΌΠΎΠ½ ΠΈ ΡΡΠΈΠ»ΠΈΡΠΈΡΠ΅ Shepherd ΡΠ° Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π½Π° Π΅Π·ΠΈΠΊΠ° Guile (Π΅Π΄Π½Π° ΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈΡΠ΅ Π½Π° Π΅Π·ΠΈΠΊΠ° Scheme), ΠΊΠΎΠΉΡΠΎ ΡΡΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅ΡΠ²ΠΈΡΠΈΡΠ΅. Shepherd Π²Π΅ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π° GuixSD GNU/Linux ΠΈ Π΅ Π½Π°ΡΠΎΡΠ΅Π½ ΡΡΡΠΎ ΠΊΡΠΌ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π² GNU/Hurd, Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π½Π° Π²ΡΡΠΊΠ° POSIX-ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠ° ΠΠ‘, Π·Π° ΠΊΠΎΡΡΠΎ Π΅ Π½Π°Π»ΠΈΡΠ΅Π½ Π΅Π·ΠΈΠΊΡΡ Guile.
Shepherd ΠΈΠ·Π²ΡΡΡΠ²Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° ΠΏΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ ΠΈ ΡΠΏΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅ΡΠ²ΠΈΡΠΈΡΠ΅, ΠΊΠ°ΡΠΎ Π²Π·Π΅ΠΌΠ° ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ Π²Π·Π°ΠΈΠΌΠΎΠ²ΡΡΠ·ΠΊΠΈΡΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡ , Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ ΠΈ ΡΡΠ°ΡΡΠΈΡΠ° ΡΠ΅ΡΠ²ΠΈΡΠΈΡΠ΅, ΠΎΡ ΠΊΠΎΠΈΡΠΎ Π·Π°Π²ΠΈΡΠΈ ΠΈΠ·Π±ΡΠ°Π½ΠΈΡΡ ΡΠ΅ΡΠ²ΠΈΡ. Shepherd ΡΡΡΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΡΠ²ΠΈΡΠΈΡΠ΅ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΡΠ²Π° ΡΡΡ Π½ΠΎΡΠΎ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅. ΠΡΠΎΠ΅ΠΊΡΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°ΠΊΡΠΎ Π² ΡΠΎΠ»ΡΡΠ° Π½Π° ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΎΠ½Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° (init Ρ PID 1), ΡΠ°ΠΊΠ° ΠΈ Π² ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½Π° ΡΠΎΡΠΌΠ° Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠΎΠ½ΠΎΠ²ΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΈ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° tor, privoxy, mcron ΠΈ Ρ.Π½.) Ρ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Ρ ΠΏΡΠ°Π²Π°ΡΠ° Π½Π° ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ.
ΠΡΠ½ΠΎΠ²Π½ΠΈ Π½ΠΎΠ²ΠΎΠ²ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ:
- Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡΡΠ° Π·Π° Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈ ΡΠ΅ΡΠ²ΠΈΡΠΈΠΈ (transient), ΠΊΠΎΠΈΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠ΅ Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Ρ ΡΠ»Π΅Π΄ ΠΏΡΠΈΠΊΠ»ΡΡΠ²Π°Π½Π΅ΡΠΎ ΡΠΈ, ΠΏΠΎΡΠ°Π΄ΠΈ ΡΠΏΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠ° ΠΈΠ»ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΠΌΠ΅ΡΠΎΠ΄Π° "stop", ΠΊΠΎΠ΅ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° ΡΠΈΠ½ΡΠ΅Π·ΠΈΡΠ°Π½ΠΈ ΡΠ΅ΡΠ²ΠΈΡΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°Π½ΠΈ ΡΠ»Π΅Π΄ ΠΏΡΠΈΠΊΠ»ΡΡΠ²Π°Π½Π΅.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°ΡΠ° "make-inetd-constructor" Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠ΅ΡΠ²ΠΈΡΠΈΠΈ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Π½Π° inetd.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°ΡΠ° "make-systemd-constructor" Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠ΅ΡΠ²ΠΈΡΠΈΠΈ, Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ΠΈ ΠΏΡΠΈ ΠΌΡΠ΅ΠΆΠΎΠ²Π° Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡ (ΠΏΠΎ ΡΡΠΈΠ» Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° systemd socket activation).
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅ΡΠ²ΠΈΡ Π² ΡΠΎΠ½ΠΎΠ²Π° ΡΡΠ΅Π΄Π° β "start-in-the-background".
- ΠΡΠΎΡΠ΅Π΄ΡΡΠ°ΡΠ° "make-forkexec-constructor" Π΅ ΡΠ°Π·ΡΠΈΡΠ΅Π½Π° Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ ":supplementary-groups", "#:create-session" ΠΈ "#:resource-limits".
- ΠΡΠΈΠ³ΡΡΠ΅Π½Π° Π΅ ΡΠ°Π±ΠΎΡΠ° Π±Π΅Π· Π±Π»ΠΎΠΊΠΈΡΠ°Π½Π΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ·ΡΠ°ΠΊΠ²Π°Π½Π΅ΡΠΎ Π½Π° PID ΡΠ°ΠΉΠ»ΠΎΠ²Π΅.
- ΠΠ° ΡΠ΅ΡΠ²ΠΈΡΠΈΠΈ Π±Π΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° "#:log-file" Π΅ ΠΎΡΠΈΠ³ΡΡΠ΅Π½ ΠΈΠ·Ρ ΠΎΠ΄ Π² syslog, Π° Π·Π° ΡΠ΅ΡΠ²ΠΈΡΠΈΠΈ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ "#:log-file" β Π·Π°ΠΏΠΈΡ Π½Π° Π»ΠΎΠ³Π° Π² ΠΎΡΠ΄Π΅Π»Π΅Π½ ΡΠ°ΠΉΠ» Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π·Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° Π·Π°ΠΏΠΈΡΠΈΡΠ΅. ΠΠΎΠ³ΠΎΠ²Π΅ΡΠ΅ ΠΎΡ Π½Π΅ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΡΠ΅Ρ shepherd ΡΠ΅ Π·Π°ΠΏΠ°Π·Π²Π°Ρ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° $XDG_DATA_DIR.
- ΠΠΎΠ΄ΠΊΡΠ΅ΠΏΠ°ΡΠ° Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ Ρ Guile 2.0 Π΅ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½Π°. Π Π΅ΡΠ΅Π½ΠΈ ΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π²Π΅ΡΡΠΈΠΈΡΠ΅ Guile 3.0.5-3.0.7.
- ΠΠ° ΡΠ°Π±ΠΎΡΠ° ΡΠ΅Π³Π° Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Fibers 1.1.0 ΠΈΠ»ΠΈ ΠΏΠΎ-Π½ΠΎΠ²Π° Π²Π΅ΡΡΠΈΡ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
