Автозапуск сервиса при обувании системы

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

G67mIUpH
Сообщения: 33

Автозапуск сервиса при обувании системы

Сообщение G67mIUpH »

ОС openSUSE 10.2
Есть скрипт для запуска/останова сервиса, типа
case "$1" in
start)
....
;;
stop)
...
;;
esac

Скопировал его в /etc/init.d, создал две символические ссылки в /etc/init.d/rc5.d: S50service и K01service. Скрипт не срабатывает. Что я сделал не правильно?

Ещё вопрос. Какого назначение (если есть) у директории /etc/init.d/init.d в openSUSE? А то одна программа мне записала в эту директорию свой скрипт.
Спасибо сказали:
Аватара пользователя
sergeyvp
Сообщения: 807
ОС: ubuntu

Re: Автозапуск сервиса при обувании системы

Сообщение sergeyvp »

G67mIUpH писал(а):
05.04.2007 19:33
Скопировал его в /etc/init.d, создал две символические ссылки в /etc/init.d/rc5.d: S50service и K01service. Скрипт не срабатывает. Что я сделал не правильно?

S -- запустить скрипт
K -- остановить скрипт
То есть K01service видимо лишняя.
Вобще для добавления скриптов в загрузку есть утилиты, которые всё сами делают, главное чтобы скрипт лежал в каталоге /etc/init.d
Спасибо сказали:
G67mIUpH
Сообщения: 33

Re: Автозапуск сервиса при обувании системы

Сообщение G67mIUpH »

Вобще для добавления скриптов в загрузку есть утилиты, которые всё сами делают, главное чтобы скрипт лежал в каталоге /etc/init.d

Как называется такая утилита в SUSE?
Спасибо сказали:
Аватара пользователя
Uncle_Theodore
Сообщения: 3339
ОС: Slackware 12.2, ArchLinux 64

Re: Автозапуск сервиса при обувании системы

Сообщение Uncle_Theodore »

G67mIUpH писал(а):
05.04.2007 19:57
Вобще для добавления скриптов в загрузку есть утилиты, которые всё сами делают, главное чтобы скрипт лежал в каталоге /etc/init.d

Как называется такая утилита в SUSE?

Насколько я поиню, она называется chkconfig
А скрипт, который то добавил, исполняемый?
Спасибо сказали:
Аватара пользователя
Voice
Сообщения: 1073
Статус: столлманист
ОС: Debian GNU/Linux

Re: Автозапуск сервиса при обувании системы

Сообщение Voice »

sergeyvp писал(а):
05.04.2007 19:43
S -- запустить скрипт
K -- остановить скрипт
То есть K01service видимо лишняя.
Вобще для добавления скриптов в загрузку есть утилиты, которые всё сами делают, главное чтобы скрипт лежал в каталоге /etc/init.d

А почему K01service лишняя?
"И может собственных Платонов и быстрых разумом Невтонов российская земля рождать."
М. В. Ломоносов
Спасибо сказали:
Аватара пользователя
sergeyvp
Сообщения: 807
ОС: ubuntu

Re: Автозапуск сервиса при обувании системы

Сообщение sergeyvp »

Voice писал(а):
05.04.2007 21:09
А почему K01service лишняя?

Ну обычно ссылки останавливающие работу сервиса помещаются в другой уровень.
А так получается что он сначала убивается, а потом опять запускается.

P/S Если я конечно ничего не путаю :D
Спасибо сказали:
Аватара пользователя
Voice
Сообщения: 1073
Статус: столлманист
ОС: Debian GNU/Linux

Re: Автозапуск сервиса при обувании системы

Сообщение Voice »

sergeyvp писал(а):
05.04.2007 21:37
Ну обычно ссылки останавливающие работу сервиса помещаются в другой уровень.
А так получается что он сначала убивается, а потом опять запускается.

P/S Если я конечно ничего не путаю :D

Хм... Я думал что S.. ссылка вызывается при переходе на данный уровень, а K... при переходе с него на любой другой.

Ану ведающие в этом нелегком вопросе просветите.
"И может собственных Платонов и быстрых разумом Невтонов российская земля рождать."
М. В. Ломоносов
Спасибо сказали:
Аватара пользователя
sergeyvp
Сообщения: 807
ОС: ubuntu

Re: Автозапуск сервиса при обувании системы

Сообщение sergeyvp »

Voice писал(а):
05.04.2007 22:00
Хм... Я думал что S.. ссылка вызывается при переходе на данный уровень, а K... при переходе с него на любой другой.

Есть несколько уровней загрузки, все они обозначены соответствующими катлогами
rc[0-6].d
В каждом каталоге находится набор ссылок на скрипты которые должны выполняться на данном уровне, а один из каталогов содержит ссылки начинающиеся на K то есть это уровень завершения работы на котором все сервисы убиваются.

По моему так :)
Спасибо сказали:
G67mIUpH
Сообщения: 33

Re: Автозапуск сервиса при обувании системы

Сообщение G67mIUpH »

Вскрытие показало две вещи:
1) При обувании системы (boot) сервису дается команда status ($1 в скрипте, вызываемом по симв. ссылке). Это так должно быть? Разве должно быть не start?

2) В скрипте обнаружен какой-то ". /etc/rc.config", которого в моей системе нет. Что ему соответствует в SUSE?

3) chkconfig есть, а ещё для включения/выключения сервиса можно использовать "yast2/система/системные службы (runlevel)"
Спасибо сказали:
Аватара пользователя
Uncle_Theodore
Сообщения: 3339
ОС: Slackware 12.2, ArchLinux 64

Re: Автозапуск сервиса при обувании системы

Сообщение Uncle_Theodore »

Спасибо сказали:
Аватара пользователя
sergeyvp
Сообщения: 807
ОС: ubuntu

Re: Автозапуск сервиса при обувании системы

Сообщение sergeyvp »


Статьи интересные, но в Ubuntu иерархия каталогов другая :D
А умные книжки у меня на полке лежат и я в них частенько заглядываю :D
Спасибо сказали:
G67mIUpH
Сообщения: 33

Re: Автозапуск сервиса при обувании системы

Сообщение G67mIUpH »

Ссылки дельные, но всё это я более-менее знал, а чего не знал до того догадывался. Мне удалось добиться того, что служба вызывается с параметром start (пока я не проинсталлировал её командой chkconfig она не вызывалась вообще, и status тот я не знаю откуда вылез). Но работать эта служба не может, потому что требует чтобы её стартовали после поднятия сети. А какого фига chkconfig смонтировал её как S01service? Можно как-нибудь повлиять на chkconfig, чтобы службу монтировал в конец списка?
Спасибо сказали:
G67mIUpH
Сообщения: 33

Re: Автозапуск сервиса при обувании системы

Сообщение G67mIUpH »

Всё. я здаюсь! Целый день убил на какую-то ерунду. Оказывается в линуксе невозможно правильно смонтировать сервис, чтобы он запускался при обувании. Пришлось дописать команду для запуска моего сервиса в /etc/init.d/rc5.d/S11apache2, чтобы он запускался вместе с апачем.

Подведу итог темы. Чтобы смонтировать сервис в линуксе, пропишите команду для его запуска в какую-нибудь программу, которая точно запускается. Всем спасибо.
Спасибо сказали:
G67mIUpH
Сообщения: 33

Re: Автозапуск сервиса при обувании системы

Сообщение G67mIUpH »

Решение найдено. Правельный итог темы такой:

Чтобы заставить сервис запускаться при обувании системы, надо взять специальный файл для управления этим сервисом, имеющий следующий синтаксис:

case "$1" in
start)
....
;;
stop)
...
;;
esac

и скопировать его в /etc/init.d. Если в этом файле нет метаинформации о порядке запуска этого сервиса по отношению к другим сервисам, то эту информацию надо добавить. Скопируйте её из /etc/init.d/network или /etc/init.d/apache2. Информация эта должна быть в начале файла (после, возможно, комментариев), и должна иметь следующий вид:

### BEGIN INIT INFO
# Provides: apache2 httpd2
# Required-Start: $local_fs $remote_fs $network
# X-UnitedLinux-Should-Start: $named $time postgresql sendmail mysql ypclient dhcp radiusd
# Required-Stop: $local_fs $remote_fs $network
# X-UnitedLinux-Should-Stop:
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Short-Description: Apache 2.2 httpd
# Description: Start the httpd daemon Apache
### END INIT INFO

Знаки комментариев обязательны. Далее надо создать на этот файл символические ссылки, но не в коем случае не делайте это вручную: ничего не будет работать! Создайте их утилитой chkconfig:

chkconfig -a my_service_name

где my_service_name - имя вышеописанного файла (т.е. его полное имя было /etc/init.d/my_service_name).

Источник: http://www.pfarrell.com/technotes/nowindows.html


В скрипте обнаружен какой-то ". /etc/rc.config", которого в моей системе нет. Что ему соответствует в SUSE?

Отвечаю: ему соответствует /etc/rc.status. Возможно кому-нибудь пригодится.
Спасибо сказали: