Так что одним из пунктов выскочки является простота написания.
В сценариях init.d много магии сценариев оболочки, которые повторяются снова и снова. Операторы case, отслеживание pidfile, строки комментариев lsb. Не очень понятно, как написать ХОРОШИЙ скрипт init.d, не прочитав его.
Если у вас уже были проблемы с написанием всего этого, то вам не нужна выскочка, если, как я упоминал в другом комментарии, вы не зависите от другой выскочки / события.
Но на самом деле выскочка делает вещи действительно простыми. Вам не нужно предварительно запускать, если вам не нужно настраивать такие вещи, как tmpdirs, ulimits или аргументы времени выполнения. Вы не должны нуждаться в пост-остановке, если не хотите убедиться, что вы убираете после службы (служба действительно должна очищаться после обычного выхода).
Часто гигантский сценарий init.d с множеством опций сводится к 10-15-строчной работе. У самых сложных сценариев init.d большая часть их логики может быть выгружена в предстартовые. Ключевым моментом здесь является то, что это всего лишь небольшой фрагмент кода для настройки среды для процесса, а не логика обработки start / stop / respawn / etc.
Самое сложное, и то, что люди чаще всего ошибаются, это знать, когда начинать / прекращать свою работу. start on runlevel [2345]
кажется логичным, но игнорирует тот факт, что в этот момент сеть работает параллельно, как и монтируемые локальные файловые системы. Ключ в том, чтобы попытаться выяснить, какие именно минимальные ресурсы вам нужны (другие сервисы, файловые системы, сеть и т. Д.) Для запуска, и начать, когда это будет сделано. Большинство традиционных сетевых услуг должны делать start on (local-filesystems and net-device-up IFACE!=lo)
.