Запуск скрипта во FreeBSD после загрузки / перезагрузки - PullRequest
0 голосов
/ 27 августа 2018

У меня есть простой скрипт:

#!/bin/sh

PROVIDE: test
REQUIRE: LOGIN NETWORKING

. /etc/rc.subr

name="test"
load_rc_config $name

rcvar=test_enable

cd /home/deploy/projects/test
/usr/sbin/daemon -u deploy /usr/local/bin/node /home/deploy/projects/test/server.js

run_rc_command "$1"

внутри /usr/local/etc/rc.d. Это исполняемый файл. Он зарегистрирован в /etc/rc.conf

Мне нужно запустить его после загрузки / перезагрузки. Мне удалось сделать это с Cron, используя

@reboot

но это не выглядит законным. Как правильно запускать этот скрипт автоматически после загрузки / перезагрузки?

1 Ответ

0 голосов
/ 27 августа 2018

Прежде всего, в официальной документации есть статья, объясняющая, как писать сценарии rc: Практический сценарий rc.d в BSD .

Вероятно, он ответит на большинство ваших вопросов.

Когда дело доходит до вашего сценария:

  1. Ключевые слова, такие как PROVIDE, REQUIRE и т. Д., Должны быть комментариями.Для получения дополнительной информации см. Справочную страницу rc (8) и справочную страницу rcorder (8) .

    #!/bin/sh
    #
    # PROVIDE: test
    # REQUIRE: LOGIN NETWORKING
    
  2. Я думаю, что вытакже пропустите установку test_enable на значение по умолчанию.

    : "${test_enable:="NO"}"
    
  3. Вы на самом деле не хотите просто помещать инструкции для запуска вашего демона в глобальную область действия скрипта.Эта часть вашего кода плохая:

    cd /home/deploy/projects/test
    /usr/sbin/daemon -u deploy /usr/local/bin/node /home/deploy/projects/test/server.js
    

    Вы должны попытаться определить функцию start_cmd (ищите argument_cmd на странице справки rc.subr (8) дляили определите переменную command.


В общем, лучшая идея - взглянуть на другие сценарии в /etc/rc.d и /usr/local/etc/rc.d, чтобы увидеть, каклюди пишут те и какие стандарты.Так я узнал это недавно, когда разрабатывал демон для файловой системы Keybase (KBFS).Вы можете посмотреть код здесь .

Справочные страницы также полезны.Начните с rc (8) , а затем посмотрите другие руководства, перечисленные в разделе СМОТРИ ТАКЖЕ .

...