Як вказати команду відключення демона за допомогою запуску?


9

Як налаштувати початкову конфігурацію, як визначити, яку команду слід використовувати для відключення сервера. Скажімо, у мене є демон, який має два окремі процеси.

  • startup.sh - для запуску сервера
  • shutdown.sh - щоб вимкнути сервер

Припустимо, у мене є файл на початку, який виглядає приблизно так.

description "Some Example Service"
author "Me"

start on runlevel [2345]
stop on runlevel [016]
respawn

exec startup.sh 

Як мені сказати на початку, що він повинен дзвонити shutdown.shпри відключенні сервера? Як нормально нормально розраховує закрити демон?

Відповіді:


10

Використовувати execдля запуску процес добре, але при зупинці його, якщо вам абсолютно потрібно запустити певний скрипт або набір команд, ви можете використовувати pre-stopстрофу.

pre-stop exec shutdown.sh

Я припускаю, що ви спробували просто використовувати exec строфу, і це не спрацювало, можливо, тому, що вашому демону потрібна спеціальна очистка. Зауважте, що добре поведені демони повинні отримувати сигнал від запуску, коли робота припиняється, і якщо вони обробляють сигнал належним чином, додаткової очистки не потрібно.

Припинення роботи передбачає надсилання на неї SIGTERM. Якщо є щось, що потрібно зробити перед SIGTERM, зробіть це тут. Можливо, сервіси повинні працювати з SIGTERM дуже витончено, тому це не повинно бути необхідним.

якщо є щось критичне, як-от помилка на диску, а збільшення тайм-ауту вбивства не є можливим, попередня зупинка не є поганим місцем для цього

Прочитайте також цей розділ для всього робочого процесу того, що відбувається, коли ви припините роботу. Зверніть увагу, коли виконується попередня зупинка і як подається сигнал після цього процесу, і це те, як нормально обробляється робота з зупинкою завдань.

Моє джерело - офіційна кулінарна книга Upstart за адресою: http://upstart.ubuntu.com/cookbook/


1
"Зауважте, що добре поведені демони повинні отримувати сигнал від запуску, коли робота припиняється, і якщо вони обробляють сигнал належним чином, додаткове очищення не потрібно." - зауважте, що ми використовуємо сценарії у світі Unix для того, щоб мати контроль над речами поруч із роботою програмістів. І це смішне зауваження, адже нам потрібно десь включити, наприклад, надсилання електронного листа, зняття блокування з дис і т. Д. І ці завдання не повинні бути частиною самого демона. Таким чином, upstart не готовий до використання в середовищі серверів.
каказ

З цієї відповіді (Єдиної!) Я бачу, що немає хорошого способу зробити те, що нам потрібно?
каказ
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.