Скрипт оболочки, запускающий дочерние процессы

Отказ от ответственности: я совершенно новичок в сценариях оболочки, но у меня есть небольшой опыт работы с другими языками, такими как PHP и Obj-C.

Я пишу свой первый скрипт-демон. Вот цели:

  • Я хочу, чтобы он работал в фоновом режиме
  • Я хочу, чтобы он запускался скриптом init.d, который включает команды start/stop/restart
  • Я хочу, чтобы каждый процесс в цикле запускал свой собственный подпроцесс.
  • Когда родительский процесс, запущенный сценарием init.d, уничтожен, я хочу, чтобы подпроцессы также умерли.

По сути, я ищу такое же поведение, которое, по-видимому, очень распространено среди программного обеспечения, такого как apache, spamd, dovecot и т. Д. Но, основываясь на моих исследованиях, я не нашел ни одного простого ответа относительно того, как это такие вещи достигнуты.

Любая помощь очень ценится.

2 ответа

Решение

Вы найдете много очень полезной информации, прочитав Управление процессами.

Кроме того, взгляните на свой существующий init.d сценарии и использовать их в качестве моделей, как вы пишете свои собственные. Имейте в виду, однако, что некоторые из них могут выстоять. Поэтому постарайтесь не вырабатывать вредных привычек.

Вы, вероятно, захотите написать свои скрипты в оболочке Bourne (sh), а не Bash, но вы можете многое узнать о том, что применимо как к чтению часто задаваемых вопросов Bash, так и к ошибкам Bash.

Вот шаги.

  • Давайте скажем ваш скрипт / opt / path / test. Убедитесь, что его исполняемый файл

  • Убедитесь, что следующий набор строк в верхней части вашего скрипта, сразу после "#!/ Bin / bash"

    Для RedHat и двоюродных братьев:

    chkconfig: - Sequence # & Level, который вы хотите запустить "Например:- 91 35"

    описание: описание вашего процесса DAEMON

    имя процесса: имя демона

  • Посмотрите пример сценария в пути /etc/init.d и попробуйте имитировать процесс запуска / остановки / перезапуска... [БОЛЬШОЙ ШАГ... не вдаваясь в детали]

  • Завершите "&" для запуска вашего сценария в фоновом режиме в сценарии

    Например:- " /opt/path/test & "

  • Скопируйте скрипт в каталог /etc/init.d

  • Нет делать chkconfig

    chkconfig - добавить тест

    тест chkconfig включен

  • Верификация

    chkconfig - список | тест grep

  • Сделайте /etc/init.d/test stop / start / restart.. убедитесь, что ваш процесс запущен.

Другие вопросы по тегам