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, но у него с исключениями лучше. А делать тонкую настройку конструкции с зависимостями на декларативной системе, которая не прогоняется принудительно через верификацию (которую тоже не вполне понятно, как делать), часто получается дороже. Когда из-за ошибки в конфигурации (оставим пока в стороне тему, что реализация даже правильно сконфигурированной конструкции в нашем случае сама по себе тот еще глюкодром) оно внезапно не работает, причем в разных запусках по-разному, искать ту ошибку оказывается ой, как весело... Хрень-то не чисто функциональная, а с побочными эффектами, с воспроизводимостью в условиях параллелизации у нее, мягко говоря, не все хорошо.