Ich habe Verständnisprobleme, die ich anhand des folgenden Beispiels schildern möchte.
Wie es der Teufel will, versagt mir sporadisch der Treiber für die WLAN-Karte, woran das liegt weiß ich nicht und ist nochmal ein anderes Thema.
Ich habe nen Einzeiler geschrieben, der aus /var/log/syslog die Fehlermeldung grept und dann die Karte neu initialisiert. Nach erfolgreichem erneuten "ifup", soll mein script wieder an den Anfang zurückkehren, und wieder nach dem Fehler greppen.
Das script sieht folgendermassen aus:
Code: Alles auswählen
#!/bin/bash
# tg2
tail -f -n0 /var/log/syslog | grep -m1 "MAC suspend failed" && echo "Ausfall um" $( date ) >> /var/log/netzlog && ifdown wlan0 && ifup wlan0 && tg2;
exit 0
Wie kann ich denn entweder
- die ursprüngliche shell beenden, den neuen Aufruf aber trotzdem leben lassen (ich vermute, der Tod der aufrufenden Shell tötet den "child"-Prozeß gleich mit). Ich hab das script mal mit
Code: Alles auswählen
nohup tg2 &
oder
- unter der selben pid bleiben und innerhalb des scripts wieder an den Anfang springen. Ich nehme an mit einer "while" Konstruktion und/oder dem Verpacken des Ganzen in eine Funktion würde das Funktionieren. Geht es auch ohne das?
Sicher ein Problem der simpelsten Programmierlogik, aber eine Lösung hab ich über die Suchmaschinenrecherche noch keine gefunden, auch das Einlesen in die Grundlagen gestaltet sich eher zäh.
An der Stelle hielt ich es für nen brauchbaren Schritt, mal die konkrete Situation hier darzustellen, muß ja niemand antworten
Cheers
P.S.: das ist kein "fortgeschrittenes Thema", aber ich hab keine passendere Rubrik gefunden. Ist auch nicht debianspezifisch...