Как/где можно изменить частоту проверки списка процессов в /etc/inittab, зарегистрированных для рестарта? Тесты показывают около 5 минут, хотелось бы одну минуту. В манах конкретики нет.
тут написано, что процесс приходится рестартовать слишком часто, поэтому этот процесс приостановлен на 5 минут, чтобы дать тебе время разобраться в причинах его падения :)
А что может являться причиной этого сообщения? Выглядит это так, что init пытается стартовать программу, а она реагирует недостаточно быстро, и он пытается стартовать ее еще раз. А после этого срабатывает триггер на частоту перезапуска. Листенер - по определению достаточно легковесная программаБ и стартует быстрее одной секунды ... Просто листенер Oracle.
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
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 ~]#
while [ -n "$(ps -A| grep oracle)" ]; do
sleep 60
done
-------------------------------------
Ну или что-то в этом роде. Идея такая: раз в минуту проверять в списке процессов наличие запущенного oracle (как там процесс будет называться?). если нету процеса - выходим из скрипта. а init повторно уже запустит опять скрипт.
Ок, спасибо, попробую реализовать. Видимо проблема формальная, файл бинарника имеет имя, отличающееся от имени процесса, который он порождает. А init это не понимает. Непонятно только, почему во второй раз, после 5 минут все стартует успешно ...
> Видимо проблема формальная, файл бинарника имеет имя, отличающееся от имени процесса, который он порождает. А init это не понимает.
init следит за PIDом своего потомка, а не за его названием и не за потомками потомков. > Непонятно только, почему во второй раз, после 5 минут все стартует успешно ...
наверное, картинка такая:
- первый старт скрипта с инита
- не спеша поднимается оракл. скрипт уже закончил работу
- инит запускает ещё скрипт. оракл всё ещё поднимается
- инит запускает ещё скрипт.. еще...
- инит залочил запуск скрипта. оракл поднялся
... 5 минут
- инит пытается запустить скрипт
- ...
Вероятно, оракл поднимается после первого запуска, но неторопливо. Если есть желание, то можно это проверить, мониторя top