Я согласен с "3. Хорошо, с оговорками", но по разным причинам. Мой опыт работы с Solaris заключался в том, что у них была копия Perl для некоторых внутренних программ. Сценарий оболочки был не чем иным, как оболочкой, которая заставила Perl начать работу. Должен ли сценарий запуска быть написан на sh? Нет, но это улучшило ремонтопригодность для администратора. И сценарий инициализации не сделал ничего более сложного, чем такие вещи, как daemon --start
или daemon --stop
. Если вы это сделаете, то обычные пользователи могут запустить ваш инструмент в непривилегированном режиме, если это имеет смысл в контексте вашей программы. И они не должны были бы иметь все виды сложных настроек, чтобы уловить.
Современные дистрибутивы Linux, даже те, которые все еще используют init.d
, имеют большой набор встроенных функций, предназначенных для упрощения управления демонами. Графические процессы загрузки обычно используют эти функции, чтобы поддерживать красивый логотип, если один из сценариев запуска не начинает извергать ошибки. Ваш код Python (или любой другой язык) может не очень хорошо работать с этими схемами.
Если вас не волнует эстетика или ремонтопригодность, ваш скрипт инициализации может быть написан так, как вы хотите. Я видел много администраторов, которые не могут даже правильно вырезать и вставить, полностью игнорируют аргументы командной строки, и они просто запускают демон. Нет выключения, состояния или перезагрузки. Это было незрелым, но их код все еще работал.