On Sun, 13 Sep 2009 22:35:09 +0400 Artem Chuprina <r...@ran.pp.ru> wrote:
> Alexander Galanin -> debian-russian@lists.debian.org @ Sun, 13 Sep 2009 > 19:01:50 +0400: > > AG> sysvinit даёт мне гарантию, что он честно попытается запустить все > AG> скрипты > > В это верю... > > AG> и внятно обругается в консоль, если что пошло не так. > > ... а в это - нет. Ты посмотри на любой процесс загрузки с ошибками. И > попробуй потом найти там ошибку, ага... Выкинутую наивным скриптом > в stderr, а не в сислог или хотя бы dmesg. Согласен, тут всё плохо. Поэтому я себе в груб vga=ext дописал, чтобы увидеть больше сообщений в случае чего. Но когда эта ругань валится между "Starting foo..." и "done", сразу понятно, где искать. А если из 10 запущенный скриптов кто-то вывалит "[: 5: =: unexpected operator", будет гораздо сложнее. > AG> Потому уточняю формулировку требования: честно попытаться всё запустить > AG> перед приглашением войти в систему, чтобы не создалось ситуации, когда я > AG> уже залогинился, а nfs всё ещё не смонтирован. > > То есть если у тебя тот конец лежит, то твоя машина не должна тебе дать > возможности залогиниться. Тогда событийная модель к твоим услугам. Да, не должна. Хотя бы потому что у меня /home может быть на nfs. > Именно событийная, а не sysvinit. Так, это уже похоже на обоснование необходимости событийной модели. То есть если система каким-либо образом узнает, что nfs-сервер умер и больше не оживёт, то она должна поубивать все демоны, зависимые от него, в том числе и мою логин-сессию? > А вот если ради удовлетворения твоих закидонов оно так станет вести себя > _у меня_ - вот тут-то я и начну искать способ пришибить тебя и сделать > по-человечески... Да что ты мне всё телесными наказаниями угрожаешь? :) Давай найдём формулировку, которая устроит нас обоих. Например, "иметь возможность указать системе, что именно обязано быть у меня запущено и полностью инициализировано, когда мне предложат залогиниться". Вполне вписывается и в мои "закидоны" и в твои "не хочу ждать, пока поднимется nfs". > AG> То, что конкретный демон и конкретный его инит-скрипт завершились > AG> до того, как им стало возможно пользоваться --- проблема > AG> исключительно этого демона. И к init-у это мало относится. > > Твоими бы устами да медку хряпнуть. Таковы 9 демонов из 10. Примем это за начальные условия. В обоих случаях: при проверке пререквизитов в параллельной инициализации и при проверке готовности сервиса к работе (в последовательной), - будет работать, очевидно, одинаковый код. Так какая разница? > AG> У pppd, к примеру, есть на такой случай замечательная опция > AG> updetach. Или вот ещё ifupdown, который не завершается, пока не > AG> получит адрес по dhcp. > > ... в то время как мне сеть для логина нафиг не нужна, а нужна как раз > после - ибо нифига тут DHCP не дают, и чтобы ее получить, надо ручками > адрес прописать. Ну и на кой? Тебе, может, и не нужна, а другому понадобится. Более того, предвижу ситуацию, когда тебе для логина потребуется только один интерфейс из десяти и только две из пяти файловых систем. Причём наверняка появятся желающие распарсить руками конфиг соответствующего демона, чтобы выяснить, а какие же ему интерфейсы нужны. В итоге инит по сложности сопровождающих его скриптов преплюнет ядро. Мне страшно. > AG> И не стоит забывать, что мантайнеры не всегда добросовестные и не > AG> всегда компетентные, чтобы отследить и проверить все > AG> пререквизиты. В качестве примера того уровня, на котором находится > AG> продумывание инит-скриптов, могу указать то, что для thttpd и > AG> ejabberd на команду stop демон вообще не убивался (не знаю, как > AG> сейчас обстоят дела). > > Ты не выкручивайся. Ты покажи, чем тут последовательная загрузка лучше > параллельной. В параллельной ты, если обнаружил, что мейнтейнер забыл Она понятней и проще для отладки. > пререквизит, сам его вписываешь, и тебе ура. А в последовательной? > Танцы с бубном вокруг числа после буковки S? Или от того, что загрузка Впишу пререквизит в зависимость, запущу insserv и он поправит мне число после буковки, попутно сделав минимальную проверку правильности зависимостей. Разумеется, это в теории, т.к. в моих тепличных условиях и проблем, которые мы тут обсуждаем, я не встречал. > последовательная, мейнтейнер сразу станет на порядок ответственнее и > будет эти танцы танцевать сам? Так ты ж сам контрпримеры приводишь... Я привожу примеры того, как может мантейнер "накосячить". Исходя из этого, надо давать ему меньше мест для косяков. Логично вроде. > AG> Не многовато ли пререквизитов проверять придётся? Пример: в скрипте > AG> для запуска экзима надо будет проверять, смонтировался ли > AG> /var/spool, который может быть на nfs-е, поднялись ли сетевые > AG> интерфейсы из конфига и т.д. > > Ты туда хоть заглядывал, в этот инит-скрипт экзима? > Он мало того, что проверяет все, что ты сказал - он еще и проверяет то, > что ты забыл... Посыпаю голову пеплом. Но к тому же экзиму можно добавить в пререквизиты также и то, запущен ли spamd. Причём только в случае, если установлен sa-exim. Всё равно как-то слишком сложно выходит. > Ты эта... Не мешай одно с другим. Если у тебя драйвер сканера > неправильно подгрузился, то у тебя загрузка не встанет. У тебя, может > быть, не загрузится saned. И даже если он не загрузится настолько > неудачно, что зависнет, не реагируя на сигналы - или реагируя, но на > машинке без клавиатуры и монитора - это в sysvinit у тебя будут > проблемы, а в параллельной модели они откуда возьмутся? Пардон, а у нас ядро уже научилось грузить кривые драйвера не повисая? Чем мне поможет upstart, если у меня ядро замерло? -- Alexander Galanin -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org