Что означает START=03 в сценариях /etc/init.d на openwrt?

Я вижу много подобных шаблонов в /etc/init.d/:

START=03
START=40
START=96
etc...

Например этот скрипт:

#!/bin/sh /etc/rc.common

    START=03

    start () {
    udevd --daemon
    }

stop() {
killall -9 udevd
}

Что на самом деле означают эти цифры?


person Don    schedule 24.01.2015    source источник
comment
Да, это на Openwrt   -  person Don    schedule 24.01.2015


Ответы (2)


В этом контексте START и STOP используются для указания порядка загрузки. Скрипты с номером START=10 будут запускаться после сценариев с номером START=9, но раньше сценариев с номером START=11, а сценарии с меньшим номером STOP будут остановлены раньше, чем сценарии с большим номером.

Точнее: переменные определяют, что /etc/rc.common будет вызывать символические ссылки на эти скрипты в /etc/rc.d, когда их попросят включить/отключить. Будут /etc/rc.d/S${START}scriptname и /etc/rc.d/K${STOP}scriptname, и они будут запускаться в порядке, указанном при запуске и завершении работы соответственно.

См. также раздел о скриптах инициализации в документации OpenWrt.

person Wintermute    schedule 24.01.2015
comment
Что произойдет, если два или более скрипта имеют одинаковый стартовый номер? - person Don; 24.01.2015
comment
В настоящее время они выполняются в лексикографическом порядке (т. е. те, у которых первая буква имеет меньшее значение ASCII, выполняются первыми, если они совпадают, решает вторая буква и так далее). Однако я бы не зависел от этого; будущие версии могут попытаться распараллелить, например. - person Wintermute; 24.01.2015
comment
Проще говоря, не будет ли ошибок, если вы поместите один и тот же стартовый номер в два или более скриптов? - person Don; 24.01.2015
comment
Нет, если только эти два сценария не зависят от выполнения в определенном порядке, нет. - person Wintermute; 24.01.2015

Это просто некоторые переменные, которые вы можете использовать позже в своем файле конфигурации. Вы можете получить доступ к значению, хранящемуся в переменной, перед ее именем со знаком доллара «$»:

NAME="Hello world"
echo $NAME
person Alexander    schedule 24.01.2015