ΠΠ°ΡΠΈΡΡ ΠΠ°ΡΡΡΡΠ΅Π½ (Baptiste Daroussin), ΡΠ»Π΅Π½ FreeBSD Core Team ΠΈ Π°Π²ΡΠΎΡ ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° pkg, ΡΠ°Π·Π²ΠΈΠ²Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ Π΄Π»Ρ FreeBSD β rcd. Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ rcd Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ init-ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ Π²ΠΌΠ΅ΡΡΠΎ /etc/rc, ΡΠΈΡΠ°Π΅Ρ ΡΠ°ΠΉΠ»Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² (/etc/rcd.d/*.ucl), ΡΡΡΠΎΠΈΡ Π΄Π΅ΡΠ΅Π²ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΡΠ΅ΡΠ²ΠΈΡΡ ΠΏΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°Π±ΠΎΡΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΈ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΡ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ.
Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠ½ΠΎΠ²ΡΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΡΡ ΡΠ΅ΡΠ΅Π· ΠΏΡΡΠΌΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ Π² UNIX-ΡΠΎΠΊΠ΅Ρ ΠΈΠ»ΠΈ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠΈΠ»ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ rctl. Unit-ΡΠ°ΠΉΠ»Ρ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΎΡΠΎΡΠΌΠ»ΡΡΡΡΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ UCL, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ ΡΠΎΡΠΌΠ°Ρ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ nginx ΠΈ bind Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Π΄Π»Ρ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ, Π·Π°ΠΈΠΌΡΡΠ²ΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΠΈΠ· JSON. ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² ΡΠΈΠΏΠΎΠ²ΡΡ unit-ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π½Π° ΡΠ·ΡΠΊΠ΅ Lua. ΠΡΠΈΠΌΠ΅Ρ unit-ΡΠ°ΠΉΠ»Π° Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° nginx: name = Β«nginxΒ»; description = Β«Nginx HTTP ServerΒ»; type = Β«simpleΒ»; command = Β«/usr/local/sbin/nginxΒ»; command_args = Β«-g βdaemon off;'Β»; provides = [Β«nginxΒ», Β«httpΒ»]; requires = [Β«NETWORKINGΒ», Β«sshdΒ»]; restart { policy = Β«alwaysΒ»; max_retries = 10; delay = 2000; backoff = Β«linearΒ»; } process { user = Β«wwwΒ»; group = Β«wwwΒ»; cpuset = Β«0-3Β»; } rctl { memoryuse = { action = Β«denyΒ»; amount = Β«2gΒ»; }; pcpu = { action = Β«throttleΒ»; amount = Β«80Β»; }; }
ΠΠΌΠ΅ΡΡΠΎ ΡΠ°Π±ΠΎΡΡ Ρ PID-ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠ², Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΌ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ pdfork(). ΠΠΌΠ΅Π΅ΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π°ΠΊΡΠΈΠ²Π°ΡΠΈΠΈ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΊ ΡΠ΅ΡΠ΅Π²ΠΎΠΌΡ ΡΠΎΠΊΠ΅ΡΡ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°ΡΠΈΡΡ Π²Π°ΠΆΠ½ΡΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΎΡ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π² ΡΠ»ΡΡΠ°Π΅ Π½Π΅Ρ Π²Π°ΡΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ ΡΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° rcd Π½Π° Π»Π΅ΡΡ Π±Π΅Π· ΠΏΠΎΡΠ΅ΡΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ.
ΠΠ»Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΡΠ΅ΡΠ²ΠΈΡΡ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ rctl, Π° Π΄Π»Ρ ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΈΡ Π·Π°ΠΏΡΡΠΊ Π² jail-ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡΡ . ΠΠΎΠ·ΠΌΠΎΠΆΠ½Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠΏΡΠ°Π²Π»ΡΡΡΠ΅ΠΌΡ UNIX-ΡΠΎΠΊΠ΅ΡΡ Π² ΠΏΡΠΈΠ²ΡΠ·ΠΊΠ΅ ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌ. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ Π² ΡΠΏΡΡΠΈΠΉ ΡΠ΅ΠΆΠΈΠΌ.
Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ° ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² rc.d ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠΌΠ΅ΡΡΠΈΡ ΡΡ rc.d-ΡΠΊΡΠΈΠΏΡΠΎΠ² ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ. ΠΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ rcd Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ° Π²ΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΡΠ°Π½ΡΡΠ΅, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π·Π° ΡΡΡΡ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π΅Π»Π»ΠΈΠ²Π°Π½ΠΈΡ Π·Π°ΠΏΡΡΠΊΠ° ΡΠ΅ΡΠ²ΠΈΡΠΎΠ². ΠΠΎΠ΄ΠΎΠ±Π½Π°Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ ΡΠΏΡΠΎΡΡΠΈΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌ Π½Π° rcd ΠΈ Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡΡ Π² ΡΠΎΡΠΌΠ°Ρ unit-ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠΌΠ΅ΡΡΠΈΠ΅ΡΡ rc.d-ΡΠΊΡΠΈΠΏΡΡ.
ΠΠ»Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Ρ rc.d ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠΈΠΏ unit-ΠΎΠ² Β«legacyΒ». Rcd ΡΠΊΠ°Π½ΠΈΡΡΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ /etc/rc.d/ ΠΈ /usr/local/etc/rc.d/, ΡΠ°Π·Π±ΠΈΡΠ°Π΅Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ PROVIDE/REQUIRE/BEFORE/KEYWORD Π² ΡΠΊΡΠΈΠΏΡΠ°Ρ
, ΡΠΈΡΠ°Π΅Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ rc.conf ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π·Π°ΠΏΡΡΠΊΠ° ΡΠΊΡΠΈΠΏΡΠΎΠ², ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠΊΡΠΈΠΏΡ ΠΊΠ°ΠΊ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ legacy unit. Π ΡΠ»ΡΡΠ°Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ rcctl Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΌΠΈ unit-Π°ΠΌΠΈ, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΠ°Π½ΡΠ»ΠΈΡΡΡΡΡΡ Π² ΡΡΠ°ΡΡΠΉ ΡΠΎΡΠΌΠ°Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Β«rcctl reload sshdΒ» ΠΏΡΠΈΠ²Π΅Π΄ΡΡ ΠΊ Π·Π°ΠΏΡΡΠΊΡ Β«/etc/rc.d/sshd reloadΒ».
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
