Skrypty upstart: uruchom zadanie po uruchomieniu sieci


23

Pracuję nad przeniesieniem bieżącej konfiguracji serwera na nowszy sprzęt i przeprowadzeniem migracji z karmicznej koali Ubuntu do świadomego rysia. Obecnie używam gw6c (skompilowanego ze strony internetowej gogo6, w przeciwieństwie do wersji z repozytoriów), aby uzyskać dostęp ipv6 dla moich systemów. W systemie karmicznej koali użyłem prostego skryptu init.d, aby uruchomić klienta ipv6

 #! /bin/sh
/usr/local/gw6c/bin/gw6c -f /usr/local/gw6c/bin/gw6c.conf

Pomyślałem, że ponieważ działa to na dowolnym poziomie działania, powinno to zostać przetłumaczone

respawn
console none

start on startup

stop on shutdown

script
exec /usr/local/gw6c/bin/gw6c -f /usr/local/gw6c/bin/gw6c.conf
emit free6_ipv6_started
end script

działa to dobrze rozpoczęte od initctrl, ale najwyraźniej nie uruchamia się po uruchomieniu. - jego status jest zatrzymany / czeka. Działa dobrze (i odradza się), gdy zaczyna się inaczej. Jakieś pomysły na to, gdzie popełniam błąd i jaki byłby odpowiedni argument na początku?

EDYCJA: dokładny błąd to „init: gw6c główny proces (xxx) zakończył się statusem 8”, po którym następuje odrodzenie procesu, przy czym xxx jest PID i podejrzewam. Podejrzewam też, że jest to spowodowane tym, że gw6c uruchamia się przed rozpoczęciem pracy w sieci i potrzebuję mojego eth0, zanim gw6c zostanie

Odpowiedzi:


27

Widocznie

respawn
console none

start on (local-filesystems and net-device-up IFACE!=lo)
stop on [!12345]

script
chdir /usr/local/gw6c/bin/

exec /usr/local/gw6c/bin/gw6c 
end script

wydaje się działać


Tak, niedawno napisałem kilka, które używają net-device-up i net-device-down, które działają idealnie.
Andy Shellam

nie znalazłem go nigdzie w dokumentacji. pomógł mi ktoś z lokalnej listy mailingowej
Journeyman Geek

Właśnie tego szukałem. Nigdzie nie mogę go znaleźć w dokumentacji wstępnej.
Nathan

4

Umieść skrypt rozpoczynający gw6c w

/etc/network/if-up.d

Wszystkie skrypty w tym folderze uruchamiane są po uruchomieniu interfejsu. Jeśli chcesz, aby działał tylko, gdy pojawi się eth0, edytuj wpis eth0 w

/etc/network/interfaces

i dodaj wywołanie do skryptu

iface eth0 inet dhcp
  up /etc/init.d/gw6c restart

Sugerowałbym również dodanie skryptów wstępnego wyłączenia, aby zamknąć tunel, zanim interfejs przejdzie w tryb offline.

Gdy to zrobisz i znajdziesz implementację, która działa, opublikuj ją tutaj, aby móc jej użyć. Mam gw6c na swoim laptopie, ale do tej pory byłem zbyt leniwy, aby go zautomatyzować.


Poprzedni skrypt, który opublikowałem, działa całkiem nieźle - chociaż muszę go ręcznie zrestartować, jeśli moje połączenie zresetuje się samo - to jest na początek, co jest domyślne w lucid lynx.
Journeyman Geek

1

Dziękuję „The Geek Journeyman” :) Zaoszczędziłeś mi dużo czasu. Walczyłem ze skryptem /etc/init.d/gw6c, próbując mierzyć czas z „sysv-rc-conf -p” i zastanawiałem się, dlaczego to nie działa (inaczej WTF?).

respawn
console none

start on (local-filesystems and net-device-up IFACE=eth0)
stop on runlevel [!12345]

script

exec /etc/init.d/gw6c start
end script

Lekko zmodyfikowany skrypt („poziom pracy” i komenda exec) wykonał zadanie! :) :) :)


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.