Прежде всего, в официальной документации есть статья, объясняющая, как писать сценарии rc: Практический сценарий rc.d в BSD .
Вероятно, он ответит на большинство ваших вопросов.
Когда дело доходит до вашего сценария:
Ключевые слова, такие как PROVIDE
, REQUIRE
и т. Д., Должны быть комментариями.Для получения дополнительной информации см. Справочную страницу rc (8) и справочную страницу rcorder (8) .
#!/bin/sh
#
# PROVIDE: test
# REQUIRE: LOGIN NETWORKING
Я думаю, что вытакже пропустите установку test_enable
на значение по умолчанию.
: "${test_enable:="NO"}"
Вы на самом деле не хотите просто помещать инструкции для запуска вашего демона в глобальную область действия скрипта.Эта часть вашего кода плохая:
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) , а затем посмотрите другие руководства, перечисленные в разделе СМОТРИ ТАКЖЕ .