CentOS 6 и выскочка

18

Новый CentOS 6 поставляется с Upstart, заменяя init. Я пытаюсь преобразовать файл / etc / inittab в новый формат upstart. Этот конкретный сервер имеет только 15 или около того записей inittab, однако другие серверы имеют> 30. В основном мы хотим получить часть респавна inittab и upstart. Тем не менее, я читал всю документацию выскочки, которую я могу найти (которая в значительной степени ВСЕ основана на Ubuntu, и, видимо, на более старой версии выскочки) и ничего не получил. Я могу создать файл конфигурации (давайте назовем его /etc/init/test.conf). Файл содержит это (примечание, анонимно)

start on runlevel [345]
stop on starting shutdown

respawn
#Comment about what it does
exec su -c "/usr/bin/ssh -2CNL 11111:127.0.0.1:11111 10.10.1.1" username

Если я выдаю initctl reload-configurationработу, это признается. Я могу начать, позвонив, initctl start testи работа начнется.

Тем не менее, это не будет работать при перезагрузке, только вручную. Я попытался изменить команду запуска следующим образом, все безуспешно

start on started

start on (local-filesystems and net-device-up IFACE!=lo)

start on net-device-up IFACE=eth0 

и еще около десятка других способов, которые я мог видеть, упомянутых в разных примерах. похоже, никто не запускает сценарий. (test.conf, как и все остальные файлы в этой папке, принадлежит пользователю root, и 644)

Я что-то упускаю из виду очевидно?

Брайан
источник

Ответы:

32

Я нашел очень, очень, очень полезный сценарий выскочки для людей, которые испытывают проблемы в будущем. Поместите это в / etc / init /

# /etc/init/debug.conf
start on ( starting JOB!=debug \
or started JOB!=debug \
or stopping JOB!=debug \
or stopped JOB!=debug )
script
exec 1>>/tmp/log.file
echo -n "$UPSTART_JOB/$UPSTART_INSTANCE ($0):$$:`date`:"
echo "Job $JOB/$INSTANCE $UPSTART_EVENTS. Environment was:"
env
echo
end script

Этот скрипт в основном регистрирует все задания, которые запускаются или останавливаются. Я обнаружил, что CentOS 6 не «излучает» ничего об уровнях запуска. (ни некоторые другие общие события, которые я пробовал. '). Просмотр файла журнала, создаваемого отладочным заданием, в /tmp/log.file был очень полезен. Изменяя начало моего скрипта с:

start on runlevel [345]

в

start on started sshd

все мои работы появляются правильно. Это была боль в тылу, так как каждый пример, который я нашел, использовал прежний синтаксис.

Брайан
источник
Если бы я мог проголосовать больше, чем один раз, я бы сделал.
Питер Маунс
15

Извините за некропостинг, но мне удалось решить эту проблему с помощью следующего:

start on stopped rc RUNLEVEL=[345]

«остановлено» - это не опечатка. Кажется, что остановка происходит при входе на уровень выполнения.

Leonid99
источник
2
Спасибо за чаевые! Некропостинг это здорово, когда его полезно!
Брайан
5

Это то, что я сделал (CentOS 6, Upstart 0.6.5) для устранения проблем с респауном. В другом терминале сделайте

sudo initctl log-priority debug 
sudo tail -F /var/log/messages
Марк Лаката
источник