LINUX.ORG.RU
ФорумAdmin

inittab respawn


0

0

Как/где можно изменить частоту проверки списка процессов в /etc/inittab, зарегистрированных для рестарта? Тесты показывают около 5 минут, хотелось бы одну минуту. В манах конкретики нет.

>Тесты показывают около 5 минут

Впервые о таком слышу. Всегда была мгновенная реакция на смерть respawn-процесса

sdio ★★★★★
()
Ответ на: комментарий от sdio

увидел наконец сообщение в messages: Id "o1" respawning too fast: disabled for 5 minutes

Что, процесс обязан стартовать очень быстро?

desserg
() автор топика
Ответ на: комментарий от desserg

тут написано, что процесс приходится рестартовать слишком часто, поэтому этот процесс приостановлен на 5 минут, чтобы дать тебе время разобраться в причинах его падения :)

annoynimous ★★★★★
()
Ответ на: комментарий от annoynimous

А что может являться причиной этого сообщения? Выглядит это так, что init пытается стартовать программу, а она реагирует недостаточно быстро, и он пытается стартовать ее еще раз. А после этого срабатывает триггер на частоту перезапуска. Листенер - по определению достаточно легковесная программаБ и стартует быстрее одной секунды ... Просто листенер Oracle.

desserg
() автор топика
Ответ на: комментарий от desserg

Вероятно программа становится демоном (отцепляется) от родителя или элементарно завершается (валится)

sdio ★★★★★
()
Ответ на: комментарий от sdio

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

desserg
() автор топика
Ответ на: комментарий от desserg

Переменные окружения не все?

PATH, например, разный при старте с комстроки и старте init'ом.

Slavaz ★★★★★
()
Ответ на: комментарий от dimon555

Ну не вижу, где ошибка?

[root@hostname ~]# tail /etc/inittab pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"

# Run gettys in standard runlevels 1:2345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/mingetty tty2

# Run xdm in runlevel 5 x:5:respawn:/etc/X11/prefdm -nodaemon o1:2345:respawn:/bin/su - oracle -c "/u01/app/oracle/product/10.2.0/db_2/bin/lsnrctl start" >/dev/null 2>/dev/null

[root@hostname ~]# /bin/su - oracle -c "/u01/app/oracle/product/10.2.0/db_2/bin/lsnrctl start"

LSNRCTL for Linux: Version 10.2.0.3.0 - Production on 08-JUL-2009 17:06:56

Copyright (c) 1991, 2006, Oracle. All rights reserved.

Starting /u01/app/oracle/product/10.2.0/db_2/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 10.2.0.3.0 - Production System parameter file is /u01/app/oracle/product/10.2.0/db_2/network/admin/listener.ora Log messages written to /u01/app/oracle/product/10.2.0/db_2/network/log/listener.log Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.20.201.40)(PORT=1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.20.201.40)(PORT=1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 10.2.0.3.0 - Production Start Date 08-JUL-2009 17:06:57 Uptime 0 days 0 hr. 0 min. 0 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /u01/app/oracle/product/10.2.0/db_2/network/admin/listener.ora Listener Log File /u01/app/oracle/product/10.2.0/db_2/network/log/listener.log Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.20.201.40)(PORT=1521))) The listener supports no services The command completed successfully

desserg
() автор топика
Ответ на: комментарий от desserg

> "/u01/app/oracle/product/10.2.0/db_2/bin/lsnrctl start" >/dev/null 2>/dev/null

/dev/null - это зря.
Для начала сделай >/var/log/oracle/oracle.log 2>&1

/var/log/oracle должен быть доступен на запись пользователь oracle

Потом после init'а смотри, что там за ругань.

Slavaz ★★★★★
()
Ответ на: комментарий от Slavaz

init делает ДВЕ попытки!!! Результат первой честно пишется во внутренний лог листенера, а результат второй (неуспешной естественно) - в лог inittab: .... lsnrctl start" > /tmp/ora 2>/tmp/ora [root@hostname ~]# more /tmp/ora

LSNRCTL for Linux: Version 10.2.0.3.0 - Production on 08-JUL-2009 17:35:33

Copyright (c) 1991, 2006, Oracle. All rights reserved.

TNS-01106: Listener using listener name LISTENER has already been started [root@hostname ~]#

desserg
() автор топика
Ответ на: комментарий от desserg

Кстати, после принудительной реинициализации init q старт тоже проходит нормально - мгновенно ...

desserg
() автор топика
Ответ на: комментарий от desserg

Понятно. Скрипт запускает оракл, а потом сразу выходит.

Инит видит, что скрипт закончился и пытается его ещё раз запустить (считает, что грохнулся). Но оракл уже был запущен первым скриптом...

Не подходит такой вариант запуска. Напиши скриптец небольшой наподобие:

------------------------------------------------
/usr/local/bin/my_start_oracle.sh:

#!/bin/sh

/bin/su - oracle -c "/u01/app/oracle/product/10.2.0/db_2/bin/lsnrctl start" >/dev/null 2>/dev/null

while [ -n "$(ps -A| grep oracle)" ]; do
sleep 60
done

-------------------------------------

Ну или что-то в этом роде. Идея такая: раз в минуту проверять в списке процессов наличие запущенного oracle (как там процесс будет называться?). если нету процеса - выходим из скрипта. а init повторно уже запустит опять скрипт.


/etc/inittab:
...
o1:2345:respawn:/usr/local/bin/my_start_oracle.sh
...

Slavaz ★★★★★
()
Ответ на: комментарий от Slavaz

Ок, спасибо, попробую реализовать. Видимо проблема формальная, файл бинарника имеет имя, отличающееся от имени процесса, который он порождает. А init это не понимает. Непонятно только, почему во второй раз, после 5 минут все стартует успешно ...

desserg
() автор топика
Ответ на: комментарий от desserg

> Видимо проблема формальная, файл бинарника имеет имя, отличающееся от имени процесса, который он порождает. А init это не понимает.

init следит за PIDом своего потомка, а не за его названием и не за потомками потомков.

> Непонятно только, почему во второй раз, после 5 минут все стартует успешно ...


наверное, картинка такая:
- первый старт скрипта с инита
- не спеша поднимается оракл. скрипт уже закончил работу
- инит запускает ещё скрипт. оракл всё ещё поднимается
- инит запускает ещё скрипт.. еще...
- инит залочил запуск скрипта. оракл поднялся
... 5 минут
- инит пытается запустить скрипт
- ...

Вероятно, оракл поднимается после первого запуска, но неторопливо. Если есть желание, то можно это проверить, мониторя top


Slavaz ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.