Alexey Shrub -> Debian Russian Mailing List @ Sat, 14 Nov 2015 09:02:15 +0300:
>> Ну, вообще-то инит-скрипт, как процедура запуска демона, является частью >> его инфраструктуры. Чего бы ему не знать? AS> Да, может и знать, только не нарушая DRY, т.е. он должен читать конфиг демона AS> и оттуда брать информацию о том что и где чистить и при это гадить в системные AS> и в логи демона что о делает. Только в таком варианте это будет относительно AS> нормально. Или писать в конфиг демона. Вернее (и это часто делают), в параметры командной строки. AS> По данному примеру - раз systemd уже взялся подчищать за процессом (судя по AS> приведёным ранее его опциям), то значит ему этим и заниматься, если он где-то AS> не дорабатывает, то делаем временный костыль и пишем багрепорт. Ну, тут, пожалуй, да, соглашусь. Если функциональность есть в запускалке, ее и использовать. AS> Вобщем мне кажется по вопросу шел скрипты vs конфиги мы зашли в тупик, моё AS> чувство архитектуры говорит мне что если можно использовать конфиг вместо AS> языка программирования то так и надо делать, это защита от ошибок и дыр в AS> безопасности. Но видимо каждый останется при своём мнении. А вот тут я бы предложил глянуть чуть шире. Язык конфига - это тоже язык программирования. Только это декларативный DSL. Впрочем, если глянуть шире, то все языки программирования - DSL, только для D разной ширины. Конкретно sh - DSL для взаимодействия словами между пользователем и операционной системой, предназначенный для двух целей - интерактивного взаимодействия и автоматизации выработанного в оном интерактивном взаимодействии (бизнес-)процесса. Возвращаясь к конфигам, их DSL, как правило, наколеночный и либо очень слабый, либо очень кривой. Исключения - большая редкость, мне вот прямо в голову ничего не приходит. На самом деле, насколько я понимаю, в целях иллюстрации кривизны мощного DSL надо приводить вообще не systemd, а exim. Из того, что я в жизни видел, кривее только язык досовско-виндовых батников (от .bat до .cmd), и то в сравнении с sh. А мысль такая. Начиная с некоторой выразительной силы, декларативный язык будет удобнее процедурного (по критериям читаемости программы, и следовательно, ее компактности, и минимизации шансов насажать ошибок) только если он продуман очень хорошо. А если он продуман не очень хорошо (даже просто хорошо, но не очень хорошо), то процедурный выдает на выходе более простую и лучше читаемую программу. Случай с exim - прекрасная иллюстрация фейспалма на этом пути. Однако, плачем, колемся, но продолжаем жрать этот кактус, потому что у конкурентов плохо как раз с достаточностью выразительной силы. С systemd, насколько я понимаю, ситуация все же получше, но осложняется тем, что его DSL поначалу имел недостаточную выразительную силу, и все еще идет ее наращивание. С соответствующим усложнением языка. Может быть, конфигам systemd и можно было бы доверить систему инициализации более, чем скриптам SysV init. Если бы можно было доверить жизнеспособность системы самому systemd...