Changes
Translation components API.
See the Weblate's Web API documentation for detailed description of the API.
GET /api/components/documentation/articlesrc-scripting_index/changes/?format=api&page=63
https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/changes/?format=api&page=64", "previous": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/changes/?format=api&page=62", "results": [ { "unit": "https://translate-dev.freebsd.org/api/units/1807480/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:58.675394Z", "action": 9, "target": "Основная проблема монолитного подхода заключалась в том, что он не предоставлял контроля над отдельными компонентами, запускаемыми из [.filename]#/etc/rc#. Например, [.filename]#/etc/rc# не мог перезапустить отдельный демон. Администратору системы приходилось вручную находить процесс демона, завершать его, ждать, пока он действительно завершится, затем искать в [.filename]#/etc/rc# нужные флаги и, наконец, вводить полную командную строку для повторного запуска демона. Задача становилась ещё сложнее и более подверженной ошибкам, если служба состояла из нескольких демонов или требовала дополнительных действий. Одним словом, единый скрипт не справлялся с тем, для чего скрипты вообще предназначены: облегчать жизнь администратору системы.", "id": 876934, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876934/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807481/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:58.692324Z", "action": 9, "target": "Позже была предпринята попытка разделить некоторые части [.filename]#/etc/rc# для возможности отдельного запуска наиболее важных подсистем. Известным примером стал [.filename]#/etc/netstart#, предназначенный для настройки сети. Это позволяло получить доступ к сети в однопользовательском режиме, но плохо интегрировалось в автоматический процесс запуска, так как части его кода требовалось переплетаться с действиями, по сути не связанными с сетью. Именно поэтому [.filename]#/etc/netstart# превратился в [.filename]#/etc/rc.network#. Последний больше не был обычным скриптом; он состоял из больших, запутанных функций man:sh[1], вызываемых из [.filename]#/etc/rc# на разных этапах загрузки системы. Однако по мере того, как задачи при запуске становились разнообразнее и сложнее, \"квазимодульный\" подход стал ещё большей обузой, чем монолитный [.filename]#/etc/rc#.", "id": 876935, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876935/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807482/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:58.708909Z", "action": 9, "target": "Без чистого и хорошо продуманного каркаса, стартовые скрипты вынуждены были идти на всевозможные ухищрения, чтобы удовлетворить потребности быстро развивающихся BSD-ориентированных операционных систем. В конце концов стало очевидно, что необходимы дополнительные шаги на пути к детализированной и расширяемой системе [.filename]#rc#. Так появилась BSD [.filename]#rc.d#. Её признанными создателями стали Люк Мьюберн и сообщество NetBSD. Позже она была импортирована в FreeBSD. Её название отсылает к расположению системных скриптов для отдельных служб, которое находится в [.filename]#/etc/rc.d#. Вскоре мы узнаем больше о компонентах системы [.filename]#rc.d# и увидим, как вызываются отдельные скрипты.", "id": 876936, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876936/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807483/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:58.726029Z", "action": 9, "target": "Основные идеи, лежащие в основе BSD [.filename]#rc.d#, — это _тонкая модульность_ и __повторное использование кода__. _Тонкая модульность_ означает, что каждая базовая «служба», такая как системный демон или примитивная задача запуска, получает собственный сценарий man:sh[1], способный запустить службу, остановить её, перезагрузить или проверить её состояние. Конкретное действие выбирается аргументом командной строки, переданным в сценарий. Сценарий [.filename]#/etc/rc# по-прежнему управляет запуском системы, но теперь он просто вызывает небольшие сценарии один за другим с аргументом `start`. Также легко выполнять задачи завершения работы, запуская тот же набор сценариев с аргументом `stop`, что и делает [.filename]#/etc/rc.shutdown#. Обратите внимание, насколько это близко следует Unix-подходу, где используется набор небольших специализированных инструментов, каждый из которых выполняет свою задачу наилучшим образом. _Повторное использование кода_ означает, что общие операции реализованы как функции man:sh[1] и собраны в [.filename]#/etc/rc.subr#. Теперь типичный сценарий может состоять всего из нескольких строк кода man:sh[1]. Наконец, важной частью инфраструктуры [.filename]#rc.d# является man:rcorder[8], который помогает [.filename]#/etc/rc# упорядоченно запускать небольшие сценарии с учётом зависимостей между ними. Он также может помочь [.filename]#/etc/rc.shutdown#, поскольку правильный порядок завершения работы противоположен порядку запуска.", "id": 876937, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876937/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807484/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:58.742387Z", "action": 9, "target": "Дизайн BSD [.filename]#rc.d# описан в crossref:rc-scripting[lukem, оригинальной статье Люка Мьюберна], а компоненты [.filename]#rc.d# подробно документированы в crossref:rc-scripting[manpages, соответствующих руководствах]. Однако новичку в [.filename]#rc.d# может быть неочевидно, как связать многочисленные элементы вместе, чтобы создать хорошо структурированный скрипт для конкретной задачи. Поэтому в этой статье будет предпринята попытка описать [.filename]#rc.d# с другого ракурса. В ней будет показано, какие функции следует использовать в ряде типичных случаев и почему. Обратите внимание, что это не руководство, поскольку наша цель — не предоставление готовых рецептов, а демонстрация нескольких простых способов входа в мир [.filename]#rc.d#. Также эта статья не заменяет соответствующие руководства. Не стесняйтесь обращаться к ним для получения более формальной и полной документации во время чтения этой статьи.", "id": 876938, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876938/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807485/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:58.758210Z", "action": 9, "target": "Для понимания этой статьи есть предварительные требования. Прежде всего, вы должны быть знакомы с языком написания сценариев man:sh[1], чтобы освоить [.filename]#rc.d#. Кроме того, вы должны знать, как система выполняет задачи запуска и завершения работы пользовательского пространства, что описано в man:rc[8].", "id": 876939, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876939/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807486/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:58.773003Z", "action": 9, "target": "Эта статья посвящена ветке FreeBSD в [.filename]#rc.d#. Тем не менее, она может быть полезна и разработчикам NetBSD, потому что две ветки BSD [.filename]#rc.d# не только разделяют одинаковый дизайн, но и остаются схожими в аспектах, видимых авторам скриптов.", "id": 876940, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876940/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807487/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:58.788283Z", "action": 9, "target": "Обрисовка задачи", "id": 876941, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876941/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807488/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:58.803418Z", "action": 9, "target": "Немного размышлений перед запуском `$EDITOR` не повредит. Чтобы написать хорошо продуманный скрипт [.filename]#rc.d# для системной службы, сначала нужно ответить на следующие вопросы:", "id": 876942, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876942/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807489/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:58.818297Z", "action": 9, "target": "Является ли служба обязательной или опциональной?", "id": 876943, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876943/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807490/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:58.833050Z", "action": 9, "target": "Будет ли скрипт обслуживать одну программу, например, демон, или выполнять более сложные действия?", "id": 876944, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876944/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807491/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:58.847433Z", "action": 9, "target": "От каких других служб зависит наша служба, и наоборот?", "id": 876945, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876945/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807492/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:58.861530Z", "action": 9, "target": "Из следующих примеров мы увидим, почему важно знать ответы на эти вопросы.", "id": 876946, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876946/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807493/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:58.875631Z", "action": 9, "target": "Фиктивный скрипт", "id": 876947, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876947/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807494/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:58.889785Z", "action": 9, "target": "Следующий скрипт просто выводит сообщение каждый раз при загрузке системы:", "id": 876948, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876948/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807500/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:58.904073Z", "action": 9, "target": "Вот что следует учитывать:", "id": 876949, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876949/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807501/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:58.918748Z", "action": 9, "target": "➊ Интерпретируемый скрипт должен начинаться с \"волшебной\" строки shebang. Эта строка указывает программу-интерпретатор для скрипта. Благодаря строке shebang скрипт может быть запущен точно так же, как бинарная программа, при условии что у него установлен бит выполнения. (См. man:chmod[1].) Например, системный администратор может запустить наш скрипт вручную из командной строки:", "id": 876950, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876950/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807503/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:58.933335Z", "action": 9, "target": "Для корректного управления в рамках [.filename]#rc.d# скрипты должны быть написаны на языке man:sh[1]. Если у вас есть служба или порт, который использует двоичную утилиту управления или процедуру запуска, написанную на другом языке, установите этот компонент в [.filename]#/usr/sbin# (для системы) или [.filename]#/usr/local/sbin# (для портов) и вызовите его из man:sh[1] скрипта в соответствующем каталоге [.filename]#rc.d#.", "id": 876951, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876951/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807504/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:58.947657Z", "action": 9, "target": "Если вы хотите узнать подробности о том, почему скрипты [.filename]#rc.d# должны быть написаны на языке man:sh[1], изучите, как [.filename]#/etc/rc# вызывает их с помощью `run_rc_script`, а затем изучите реализацию `run_rc_script` в [.filename]#/etc/rc.subr#.", "id": 876952, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876952/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807505/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:58.962325Z", "action": 9, "target": "➋ В файле [.filename]#/etc/rc.subr# определено несколько функций man:sh[1], которые могут использоваться скриптами [.filename]#rc.d#. Эти функции описаны в man:rc.subr[8]. Хотя теоретически возможно написать скрипт [.filename]#rc.d# без использования man:rc.subr[8], его функции оказываются чрезвычайно полезными и значительно упрощают задачу. Поэтому неудивительно, что все используют man:rc.subr[8] в скриптах [.filename]#rc.d#. Мы не будем исключением.", "id": 876953, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876953/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807506/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:58.976970Z", "action": 9, "target": "Файл [.filename]#rc.d# должен \"подгрузить\" ([.filename]#/etc/rc.subr#, включить его с помощью \"`.`\") _до_ вызова функций man:rc.subr[8], чтобы у man:sh[1] была возможность изучить эти функции. Предпочтительный стиль — подгружать [.filename]#/etc/rc.subr# в самом начале.", "id": 876954, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876954/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807507/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:58.991308Z", "action": 9, "target": "Некоторые полезные функции, связанные с сетью, предоставляются другим включаемым файлом — [.filename]#/etc/network.subr#.", "id": 876955, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876955/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807508/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:59.005629Z", "action": 9, "target": "➌ [[name-var]]Обязательная переменная `name` определяет имя нашего скрипта. Она требуется man:rc.subr[8]. То есть, каждый скрипт в [.filename]#rc.d# _должен_ установить `name` перед вызовом функций man:rc.subr[8].", "id": 876956, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876956/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807509/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:59.020434Z", "action": 9, "target": "Теперь самое время раз и навсегда выбрать уникальное имя для нашего скрипта. Мы будем использовать его в нескольких местах при разработке скрипта. Содержимое переменной name должно соответствовать имени скрипта, так как некоторые части FreeBSD (например, crossref:rc-scripting[rcng-service-jails, сервис клетки] и функция cpuset в rc framework) зависят от этого. Таким образом, имя файла также не должно содержать символов, которые могут вызвать проблемы в скриптах (например, не используйте дефис \"-\" и другие).", "id": 876957, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876957/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807510/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:59.035430Z", "action": 9, "target": "Текущий стиль написания скриптов в [.filename]#rc.d# заключается в заключении значений, присваиваемых переменным, в двойные кавычки. Имейте в виду, что это всего лишь вопрос стиля, который может быть не всегда применим. Вы можете безопасно опустить кавычки вокруг простых слов без метасимволов man:sh[1], тогда как в некоторых случаях вам понадобятся одинарные кавычки, чтобы предотвратить интерпретацию значения man:sh[1]. Программист должен уметь отличать синтаксис языка от стилевых соглашений и разумно использовать и то, и другое.", "id": 876958, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876958/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807511/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:59.050309Z", "action": 9, "target": "➍ Основная идея man:rc.subr[8] заключается в том, что скрипт [.filename]#rc.d# предоставляет обработчики (или методы) для вызова man:rc.subr[8]. В частности, аргументы `start`, `stop` и другие, передаваемые в скрипт [.filename]#rc.d#, обрабатываются таким образом. Метод представляет собой выражение man:sh[1], сохранённое в переменной с именем `argument_cmd`, где _argument_ соответствует тому, что может быть указано в командной строке скрипта. Далее мы увидим, как man:rc.subr[8] предоставляет стандартные методы для типовых аргументов.", "id": 876959, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876959/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807512/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:59.064650Z", "action": 9, "target": "Чтобы сделать код в [.filename]#rc.d# более единообразным, обычно используют `${name}` везде, где это уместно. Таким образом, множество строк можно просто копировать из одного скрипта в другой.", "id": 876960, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876960/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807513/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:59.078995Z", "action": 9, "target": "➎ Следует помнить, что man:rc.subr[8] предоставляет методы по умолчанию для стандартных аргументов. Следовательно, если мы хотим, чтобы стандартный метод ничего не делал, мы должны переопределить его с помощью no-op man:sh[1] выражения.", "id": 876961, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876961/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807514/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:59.093281Z", "action": 9, "target": "➏ Тело сложного метода может быть реализовано в виде функции. Хорошей практикой является использование осмысленного имени функции.", "id": 876962, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876962/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807515/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:59.107668Z", "action": 9, "target": "Настоятельно рекомендуется добавлять префикс `${name}` к именам всех функций, определенных в нашем скрипте, чтобы они никогда не конфликтовали с функциями из man:rc.subr[8] или другого общего включаемого файла.", "id": 876963, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876963/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807516/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:59.121959Z", "action": 9, "target": "➐ Этот вызов man:rc.subr[8] загружает переменные man:rc.conf[5]. Наш скрипт пока их не использует, но всё равно рекомендуется загружать man:rc.conf[5], потому что могут быть переменные man:rc.conf[5], управляющие самим man:rc.subr[8].", "id": 876964, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876964/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807517/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:59.136224Z", "action": 9, "target": "➑ Обычно это последняя команда в скрипте [.filename]#rc.d#. Она вызывает механизм man:rc.subr[8] для выполнения запрошенного действия, используя переменные и методы, предоставленные нашим скриптом.", "id": 876965, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876965/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807518/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:59.150268Z", "action": 9, "target": "Настраиваемый фиктивный скрипт", "id": 876966, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876966/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807519/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:59.165026Z", "action": 9, "target": "Теперь добавим некоторые элементы управления в наш тестовый скрипт. Как вам может быть известно, скрипты [.filename]#rc.d# управляются с помощью man:rc.conf[5]. К счастью, man:rc.subr[8] скрывает от нас все сложности. Следующий скрипт использует man:rc.conf[5] через man:rc.subr[8], чтобы проверить, включен ли он вообще, и получить сообщение для отображения во время загрузки. Эти две задачи на самом деле независимы. С одной стороны, скрипт [.filename]#rc.d# может просто поддерживать включение и выключение своего сервиса. С другой стороны, обязательный скрипт [.filename]#rc.d# может иметь переменные конфигурации. Однако мы реализуем обе возможности в одном скрипте:", "id": 876967, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876967/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807527/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:59.179333Z", "action": 9, "target": "Что изменилось в этом примере?", "id": 876968, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876968/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807528/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:59.193478Z", "action": 9, "target": "➊ Переменная `rcvar` определяет имя переменной-переключателя ON/OFF.", "id": 876969, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876969/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807529/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:59.207625Z", "action": 9, "target": "➋ Теперь `load_rc_config` вызывается раньше в скрипте, до обращения к любым переменным man:rc.conf[5].", "id": 876970, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876970/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807530/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:59.222194Z", "action": 9, "target": "При изучении скриптов в [.filename]#rc.d# следует помнить, что man:sh[1] откладывает вычисление выражений в функции до её вызова. Поэтому не будет ошибкой вызвать `load_rc_config` непосредственно перед `run_rc_command` и при этом обращаться к переменным man:rc.conf[5] из функций методов, экспортируемых в `run_rc_command`. Это связано с тем, что функции методов вызываются `run_rc_command`, который выполняется _после_ `load_rc_config`.", "id": 876971, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876971/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807531/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:59.237000Z", "action": 9, "target": "➌ `run_rc_command` выдаст предупреждение, если переменная `rcvar` установлена, но указанная переменная-флаг не задана. Если ваш скрипт [.filename]#rc.d# предназначен для базовой системы, вы должны добавить значение по умолчанию для флага в [.filename]#/etc/defaults/rc.conf# и задокументировать его в man:rc.conf[5]. В противном случае ваш скрипт должен предоставить значение по умолчанию для флага. Канонический подход для последнего случая показан в примере.", "id": 876972, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876972/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807532/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:59.251902Z", "action": 9, "target": "Вы можете заставить man:rc.subr[8] действовать так, как если бы переключатель установлен в `ON`, независимо от его текущего значения, добавив перед аргументом скрипта префикс `one` или `force`, например `onestart` или `forcestop`. Однако учтите, что `force` имеет другие опасные эффекты, которые мы затронем ниже, тогда как `one` просто переопределяет переключатель ON/OFF. Например, предположим, что `dummy_enable` установлен в `OFF`. Следующая команда выполнит метод `start`, несмотря на настройку:", "id": 876973, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876973/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807534/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:59.266251Z", "action": 9, "target": "➍ Теперь сообщение, отображаемое при загрузке, больше не жестко закодировано в скрипте. Оно задается переменной `dummy_msg` в man:rc.conf[5]. Это простой пример того, как переменные man:rc.conf[5] могут управлять скриптом в [.filename]#rc.d#.", "id": 876974, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876974/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807535/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:59.280608Z", "action": 9, "target": "Имена всех переменных man:rc.conf[5], используемых исключительно нашим скриптом, _должны_ иметь один и тот же префикс: `${name}_`. Например: `dummy_mode`, `dummy_state_file` и так далее.", "id": 876975, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876975/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807536/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:59.294994Z", "action": 9, "target": "Хотя можно использовать более короткое имя внутри, например, просто `msg`, добавление уникального префикса `${name}_` ко всем глобальным именам, вводимым нашим скриптом, избавит нас от возможных конфликтов с пространством имен man:rc.subr[8].", "id": 876976, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876976/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807537/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:59.309551Z", "action": 9, "target": "Как правило, скрипты [.filename]#rc.d# базовой системы не должны предоставлять значения по умолчанию для своих переменных man:rc.conf[5], поскольку значения по умолчанию должны быть установлены в [.filename]#/etc/defaults/rc.conf#. С другой стороны, скрипты [.filename]#rc.d# для портов должны предоставлять значения по умолчанию, как показано в примере.", "id": 876977, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876977/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807538/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:59.324477Z", "action": 9, "target": "➎ Здесь мы используем `dummy_msg` для фактического управления нашим скриптом, т.е., для выдачи переменного сообщения. Использование shell-функции здесь избыточно, так как она выполняет только одну команду; равнозначной альтернативой является:", "id": 876978, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876978/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807540/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:59.339259Z", "action": 9, "target": "Запуск и остановка простого демона", "id": 876979, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876979/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807541/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:59.354007Z", "action": 9, "target": "Мы ранее говорили, что man:rc.subr[8] может предоставлять методы по умолчанию. Очевидно, что такие методы не могут быть слишком общими. Они подходят для стандартного случая запуска и остановки простого демона. Предположим, что нам нужно написать скрипт [.filename]#rc.d# для такого демона с именем `mumbled`. Вот он:", "id": 876980, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876980/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807545/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:59.368294Z", "action": 9, "target": "Приятно просто, не так ли? Давайте рассмотрим наш небольшой скрипт. Единственное новое, на что стоит обратить внимание, это следующее:", "id": 876981, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876981/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807546/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:59.382879Z", "action": 9, "target": "➊ Переменная `command` имеет значение для man:rc.subr[8]. Если она установлена, man:rc.subr[8] будет действовать по сценарию обслуживания обычного демона. В частности, будут предоставлены стандартные методы для таких аргументов: `start`, `stop`, `restart`, `poll` и `status`.", "id": 876982, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876982/?format=api" }, { "unit": "https://translate-dev.freebsd.org/api/units/1807547/?format=api", "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesrc-scripting_index/?format=api", "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesrc-scripting_index/ru/?format=api", "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api", "timestamp": "2025-08-07T16:43:59.398054Z", "action": 9, "target": "Демон будет запущен выполнением `$command` с флагами командной строки, указанными в `$mumbled_flags`. Таким образом, все входные данные для метода `start` по умолчанию доступны в переменных, установленных нашим скриптом. В отличие от `start`, другие методы могут требовать дополнительной информации о запущенном процессе. Например, `stop` должен знать PID процесса, чтобы завершить его. В данном случае, man:rc.subr[8] будет просматривать список всех процессов, ища процесс с именем, равным `procname`. Последний является ещё одной значимой переменной для man:rc.subr[8], и её значение по умолчанию совпадает со значением `command`. Другими словами, когда мы устанавливаем `command`, `procname` фактически устанавливается в то же значение. Это позволяет нашему скрипту завершить демон и проверить, запущен ли он вообще.", "id": 876983, "action_name": "上传了译文", "url": "https://translate-dev.freebsd.org/api/changes/876983/?format=api" } ] }{ "count": 3424, "next": "