Описание тега hayao-miyazaki
Я просто не могу понять, как определение задания выскочка RC модели в нарядные 11.04 работает. Чтобы проиллюстрировать проблему, вот определение (пустые строки и комментарии опущены):
начать на уровне [0123456]
стоп на уровень [!$Уровень]
экспорт уровень
экспорт PREVLEVEL
вывод на консоль
ОКР INIT_VERBOSE
задача
exec в файле /etc/инит.г/RC $уровень
Давайте предположим, что мы в данный момент находимся на уровне 2 и RC работа останавливается (это именно ситуация после загрузки моего ящика и входа в систему через SSH). Теперь, предположим, что система переключается на уровень выполнения 3, например, из-за команду как "команду telinit 3" дал корень. Что будет с работой РЦ?
Очевидно, что работа ру будет запущен, поскольку он в настоящее время остановился, и уровень событие 3 является сопоставление событий начала. Но теперь, вещи мне не понятны: согласно Руководству по $уровень оценивает на новый уровень, когда работа началась (что означает 3 в нашем примере).
Поэтому следующая строфа "стоп на уровень [!$Уровень]" переводится как "остановка на уровне [!3]"; это означает, что у нас есть в первой строфе, который будет запускать работу, но второй куплет никогда не будет останавливать работу, и, кажется, бесполезно.
Поскольку я знаю, что в Ubuntu / выскочка, человек не будет делать бесполезные вещи, я должен быть в значительной степени чем-то недоразумение. Буду благодарен за любое объяснение.
При попытке разобраться в этом, пришла мне в голову еще вопрос. Если бы у меня были противоречивые запуска и остановки триггеры, например
начало на ФОО
остановка на ФОО
что будет? Я клянусь, что я никогда не будет делать этого, но тем не менее я очень заинтересован в том, как выскочка ручки, которые на теоретическом уровне.
Большое спасибо!
Редактирование вопрос как реакция на первый ответ geekosaur это:
Я вижу параллельность, но это не так просто (по крайней мере, не мне).
Предположим, что работа aurrently по-прежнему работает, и новое событие уровень приходит в (Конечно, новый уровень отличается от текущего). Затем, следующее должно произойти:
1) Работа один экземпляр. Это означает, что "начать ..." не срабатывает, поскольку задание выполняется в данный момент; $уровень не тронут.
2) "остановимся на ..." будет запущен после новый уровень отличается от $уровень, поэтому работа будет прервана.
3) Теперь, то работа останавливается и ждет. Я не могу видеть, как он будет перезапущен с новый уровень. Насколько мне известно, initctl передает события только один раз, так что "начать ..." не срабатывает, и новый уровень не вошел.
Я знаю, что я еще чего-то недоразумение, и я благодарен за объяснения.
Большое спасибо!