CentOS 6 i nowszy

18

Nowy CentOS 6 jest wyposażony w Upstart, zastępujący init. Próbuję przekonwertować plik / etc / inittab do nowego formatu upstart. Ten konkretny serwer ma tylko około 15 wpisów inittab, jednak inne serwery mają> 30. Chcemy głównie części odrodzenia inittab i upstart. Jednak czytałem całą dokumentację wstępną, którą mogłem znaleźć (która jest prawie WSZYSTKO oparta na Ubuntu i najwyraźniej na starszej wersji aktualizacji wstępnej) i nigdzie się nie dostałem. Mogę utworzyć plik konfiguracyjny (nazwijmy go /etc/init/test.conf). Plik zawiera to (uwaga, zanonimizowane)

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

Jeśli wystawię initctl reload-configurationpracę, praca zostanie rozpoznana. Mogę go uruchomić, dzwoniąc, initctl start testa praca się rozpocznie.

Nie będzie to jednak działać przy ponownym uruchomieniu komputera, tylko ręcznie. Próbowałem zmodyfikować polecenie start do następującego, ale bez powodzenia

start on started

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

start on net-device-up IFACE=eth0 

i kilkanaście innych sposobów, w jakie mogłem zobaczyć wspomniane w różnych przykładach. wydaje się, że żaden nie uruchamia skryptu. (test.conf, podobnie jak wszystkie inne pliki w tym folderze, są własnością root i 644)

Czy brakuje mi czegoś rażąco oczywistego?

Brian
źródło

Odpowiedzi:

32

Znalazłem bardzo, bardzo, bardzo pomocny skrypt dla osób, które mają problemy w przyszłości. Umieść to w / 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

Ten skrypt zasadniczo rejestruje wszystkie zadania, które zaczynają się lub kończą. Przekonałem się, że CentOS 6 nie „emituje” niczego o poziomach pracy. (ani niektórych innych wspólnych wydarzeń, których próbowałem.). Bardzo pomocne było sprawdzenie pliku dziennika utworzonego przez zadanie debugowania w pliku /tmp/log.file. Zmieniając początek mojego skryptu z:

start on runlevel [345]

do

start on started sshd

wszystkie moje zadania wydają się uruchamiać poprawnie. To był ból z tyłu, ponieważ każdy znaleziony przykład używał poprzedniej składni ..

Brian
źródło
Gdybym mógł głosować więcej niż raz, zrobiłbym to.
Peter Mounce
15

Przepraszam za nekropostę, ale udało mi się rozwiązać ten problem, używając następujących elementów:

start on stopped rc RUNLEVEL=[345]

„zatrzymany” nie jest literówką - wydaje się, że rc zatrzymuje się po wejściu na poziom uruchamiania.

Leonid99
źródło
2
Dzięki za wskazówkę! Nekropostacja jest świetna, gdy jest pomocna!
Brian
5

Tak zrobiłem (CentOS 6, Upstart 0.6.5), aby debugować problemy z odradzaniem. Zrób to w innym terminalu

sudo initctl log-priority debug 
sudo tail -F /var/log/messages
Mark Lakata
źródło