Re: systemd
Alexey Shrub -> debian-russian@lists.debian.org @ Fri, 13 Nov 2015 22:54:48 +0300:
>> Это теория или практика? Питание никогда не пропадало? OOM killer
>> никогда не срабатывал?
AS> всякое бывает, но это не значит что надо пихать кучу логики в инит-скрипт,
AS> либо операционная система должна отслеживать ресурсы (быть guard'ом), либо сам
AS> демон при запуске проверять не осталось ли от него мусора от прошлой
AS> клинической смерти, но точно не стоит инит скрипту знать о том какие ресурсы
AS> нужны демону и какие из них надо почистить если что
Ну, вообще-то инит-скрипт, как процедура запуска демона, является частью
его инфраструктуры. Чего бы ему не знать?
>> Это можно сделать зависимостями, я об этом писал. А можно написать на
>> ассемблере. И то, и другое - сложнее и более чревато ошибками, чем
>> написать процедуру на sh.
AS> Невозможно поверить в то, что конфигурация конфигов более чревата
AS> ошибками чем скрипт на шелле.
И очень зря. Потому как такое сплошь и рядом.
То есть пока задача по сути одна и та же, ошибки равновероятны. А при
замене процедуры запуска на декларативный граф зависимостей сложность
задачи может нехило возрасти и перестать влезать в голову так, чтобы
охватывать картину одним взглядом.
Может и не возрасти, конечно.
AS> Кроме того, конфигурация на виду, а скрипт инициализации в подвохе
AS> будут подозревать в последнюю очередь - придётся поискать,
AS> потратить время чтобы понять почему работает именно так.
Гм. Что одно - текстовый файл для чтения глазами, что другое, вроде бы,
пока тоже...
Нет, конечно, если стереотип "шелл - это ужас-ужас" вбит глубже
сознания, тогда, конечно, да. Увидев shebang, отключаем мозг и хоть
убей, не можем понять написанное. А если не вбит, то внезапно
выясняется, что сложность указания всего, что нужно, в конфиге, и
сложность написания на шелле процедуры, которая делает ровно то же
самое, оказывается примерно одинаковой.
А если снизить планку требований до "почти всего, что нужно", то шелл
может оказаться и компактнее. На нем действительно не шибко удобно
отлавливать всякие тонкие краевые условия. В ситуациях, когда мне такое
надо, я в случае дебиана беру perl - он тоже в base system, но у него с
исключениями лучше.
А делать тонкую настройку конструкции с зависимостями на декларативной
системе, которая не прогоняется принудительно через верификацию (которую
тоже не вполне понятно, как делать), часто получается дороже. Когда
из-за ошибки в конфигурации (оставим пока в стороне тему, что реализация
даже правильно сконфигурированной конструкции в нашем случае сама по
себе тот еще глюкодром) оно внезапно не работает, причем в разных
запусках по-разному, искать ту ошибку оказывается ой, как весело...
Хрень-то не чисто функциональная, а с побочными эффектами, с
воспроизводимостью в условиях параллелизации у нее, мягко говоря, не все
хорошо.
Reply to: