19 августа 2015

Стартовый скрипт с отложенным запуском

Бывают ситуации, когда требуется запуск сервиса с задержкой. Например, какая-нибудь сетевая служба запускается, а ng-интерфейса еще не нет. Такую задачу можно решить с помощью rc.d скриптов.

Создаете в /etc/rc.d скрипт
# touch /etc/rc.d/program_name
Открываете для редактирования
# vi  /etc/rc.d/program_name
Пишете минимальный набор функций. Для выполнения задержки перед запуском используем функцию start_precmd . Замените в скрипте program_name на ваш исполняемый файл.
   
#!/bin/sh
# REQUIRE: NETWORKING SERVERS
. /etc/rc.subr

name="
program_name"
rcvar=
program_name_enable
command="/usr/local/sbin/
program_name"
start_precmd="${name}_prestart"

load_rc_config $name
: ${
program_name_enable="NO"}

name_prestart()
{
        echo "Waiting 60 sec."
        sleep 60
}

run_rc_command "$1"
Служба будет запускаться, останавливаться и перезапускаться, как обычно, по start, stop, restart.
# service program_name start
Что бы сервис стартовал автоматически в /etc/rc.conf пишем program_name_enable="YES" и не забудьте назначить исполняемый биты.
# chmod +x /etc/rc.d/program_name