Frage Upstart-Skripts: Führen Sie eine Aufgabe aus, nachdem das Netzwerk hochgefahren ist


Ich arbeite daran, mein aktuelles Server-Setup auf neuere Hardware umzustellen und von ubuntu karmic koala auf lucid lynx zu migrieren. Derzeit verwende ich gw6c (kompiliert von der gogo6-Website, im Gegensatz zu der Version aus den Repositories), um den ipv6-Zugriff für meine Systeme zu erhalten. Auf dem karmischen Koala-System verwendete ich das einfache init.d-Skript, um den ipv6-Client zu starten

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

Ich denke, da dies auf jedem Runlevel läuft, sollte es zu übersetzen

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

Dies funktioniert gut von initctrl gestartet, aber es scheint nicht zu starten, wenn es startet. - Sein Status ist Stopp / Warten. Es funktioniert gut (und Respawns), wenn es sonst gestartet wird. Irgendwelche Ideen, wo ich falsch liege, und was wäre das passende "Start-on" Argument?

EDIT: der genaue Fehler ist 'init: gw6c Hauptprozess (xxx) endete mit Status 8' gefolgt von dem Prozess Respawn, mit xxx ist eine PID Ich vermute. Ich vermute auch, dass dies der Grund ist, dass gw6c startet, bevor das Netzwerk funktioniert, und ich brauche mein eth0, bevor gw6c ist


23
2018-02-28 06:57


Ursprung




Antworten:


Offenbar

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

scheint zu funktionieren


27
2018-02-28 08:54



Ja, ich habe gerade ein paar geschrieben, die net-device-up und net-device-down verwenden, die perfekt funktionieren. - Andy Shellam
Ich habe es nirgendwo in der Dokumentation gefunden. jemand auf einer lokalen Mailingliste hat mir geholfen - Journeyman Geek
Das war genau das, wonach ich suchte. Es ist immer noch nicht in der Upstart-Dokumentation, die ich finden könnte. - Nathan


Platziere ein Skript, das gw6c startet

/etc/network/if-up.d

Alle Skripts in diesem Ordner werden ausgeführt, nachdem eine Schnittstelle angezeigt wird. Wenn Sie es nur ausführen möchten, wenn eth0 angezeigt wird, bearbeiten Sie den Eintrag eth0 in

/etc/network/interfaces

und fügen Sie dem Skript einen Aufruf hinzu

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

Ich würde auch vorschlagen, Pre-Down-Scripts hinzuzufügen, um den Tunnel herunterzufahren, bevor die Schnittstelle offline geht.

Sobald Sie das tun und eine Implementierung finden, die funktioniert, posten Sie es hier zurück, damit ich es verwenden kann. Ich habe gw6c auf meinem Laptop, aber ich war bisher zu faul, es zu automatisieren.


4
2018-02-28 08:32



Das frühere Skript, das ich gepostet habe, funktioniert ziemlich gut - obwohl ich es manuell neu starten muss, sollte meine Verbindung sich selbst zurücksetzen - dies ist für Emporkömmling, der Standard auf Lucid Lynx ist. - Journeyman Geek


Danke "Der Geselle Geek" :) Du hast mir viel Zeit gespart. Ich habe mit dem Skript /etc/init.d/gw6c gekämpft und einige Zeitvorgaben mit "sysv-rc-conf -p" versucht und mich gefragt, warum es nicht funktioniert (aka 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

Geringfügig geändertes ("runlevel" und exec Befehl) Skript hat den Job gemacht! :) :) :)


1
2018-05-14 20:24





Von hier: http://upstart.ubuntu.com/cookbook/#single-job-instance-running-without-pid

description     "Uncomplicated firewall"

# Make sure we start before an interface receives traffic
start on (starting network-interface
          or starting network-manager
          or starting networking)

stop on runlevel [!023456]

console output

pre-start exec /lib/ufw/ufw-init start quiet
post-stop exec /lib/ufw/ufw-init stop

0
2017-12-06 18:40