Як залежати від запущеної роботи від сценарію init на Ubuntu 12.04


10

Я використовую Ubuntu 12.04 LTS, і ця система використовує в основному початкові завдання. На жаль, моя система також залежить від компільованого вручну сервера dbmail , на якому є лише сценарій init, але не має початкового сценарію.

Використовуючи update-rc.d dbmail defaultsя встановив dbmail для всіх рівнів запуску, але, на жаль, він запускається до запуску MySQL, тому демон знову вмирає. Я також спробував перенести його на S90 або подібне, все ще MySQL недоступний під час запуску сценарію.

Я спробував додати залежність до заголовка LSB скрипту так:

#!/bin/sh
### BEGIN INIT INFO
# Provides:          dbmail
# Required-Start:    $local_fs $remote_fs $syslog $network mysql
# Required-Stop:     $local_fs $remote_fs $syslog $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start dbmail services
# Description:       Run network services provided by dbmail such as
#                    imap-server, pop3-server, lmtp-server, timsieve-server
### END INIT INFO

На жаль, сценарій все ще здається запущеним до того, як є MySQL. Я звик до старомодних сценаріїв init, а не для запуску завдань, тому тут я трохи заплутаний. Як я можу додати залежність або як можна змусити розпочати mysqlроботу перед dbmailскриптом init?

Як я можу перевірити / побачити початковий порядок, прийнятий для завдань + сценаріїв init під час завантаження? Чи є інструмент для цього?

Запуск сценарію вручну з оболонки після запуску працює чудово, оскільки MySQL вже працює.


Те, що спрацьовувало як некрасива обробка, - додавання "сну 3" у функції "start ()" сценарію init. Але там повинен бути більш чистий спосіб, це просто зловживання умовами перегонів, і я дуже хотів би це виправити належним чином.
Мартін К.

Відповіді:


12

Я думаю, що якщо ви запустите /etc/init.d/dbmail startз /etc/rc.localнього, він розпочнеться після всіх ваших запущених завдань / інших сценаріїв init.

Однак я б, ймовірно, це виправив, додавши нову роботу на початку /etc/init/dbmail.conf. Зазвичай у скриптів init.d є багато коду для перевірки стану тощо, який виконує обробку для вас. Це може бути так само просто, як:

start on started mysql
exec /usr/local/bin/dbmail

Або, можливо, ви можете використовувати наявний сценарій init таким чином:

start on started mysql
pre-start script
  /etc/init.d/dbmail start
end script
post-stop script
  /etc/init.d/dbmail stop
end script
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.