Wie fügt man einen Timer in Bash Scripting ein?

7

Guten Tag! Gibt es eine Möglichkeit, einen Timer (Timestamp? Oder was auch immer?) In ein Skript mit bash einzufügen? Wie zum Beispiel; Alle 60 Sekunden überprüft eine bestimmte Funktion, ob das Internet ausgefallen ist. Wenn dies der Fall ist, wird stattdessen eine Verbindung zum WLAN-Gerät hergestellt und umgekehrt. Kurz gesagt, das Programm überprüft die Internetverbindung von Zeit zu Zeit.

Alle Vorschläge / Antworten werden sehr geschätzt. =)

    
Suezy 04.08.2009, 07:27
quelle

6 Antworten

18

Stumpfe Version

%Vor%

Wenn Sie den Sleep selbst als Loop-Bedingung verwenden, können Sie die Schleife beenden, indem Sie den Schlafmodus beenden (d. h. wenn es sich um einen Vordergrundprozess handelt, wird Strg-c ausreichen).

Wenn wir Minuten- oder Stundenintervalle sprechen, wird Cron wahrscheinlich einen besseren Job machen, wie Montecristo darauf hingewiesen hat.

    
falstro 04.08.2009, 07:31
quelle
5

Vielleicht möchten Sie einen man cron erstellen.

Oder wenn Sie nur auf bash bleiben müssen, fügen Sie einfach den Funktionsaufruf in eine Schleife und 60 innerhalb der Iteration ein.

    
Alberto Zaccagni 04.08.2009 07:29
quelle
4

Hier finden Sie ein Skript, das Sie verwenden können, zuerst fügen Sie einen Eintrag zu Ihrem Cron-Job so hinzu:

$ sudo crontab -e * * * * * / Pfad / zu / deinem / Schalter

Dies ist eine einfache Methode, die darauf beruht, dass ein aktiver Server jede Minute ununterbrochen gepingt wird. Wenn der Server nicht erreichbar ist, wird er zum zweiten Router wechseln, der unten definiert ist.

sicherlich gibt es einen besseren Weg, dieses Problem auszunutzen.

$ cat & gt; Umschalter

%Vor%     
Ali Mezgani 04.08.2009 07:48
quelle
3

Ich mochte die Antwort von William, weil sie kein Polling braucht. Also habe ich basierend auf seiner Idee das folgende Skript implementiert. Es funktioniert um das Problem, dass die Kontrolle in die Shell zurückkehren muss.

%Vor%     
drizzd 21.04.2011 18:40
quelle
1

Sie können etwas wie das Folgende tun, aber es ist nicht zuverlässig:

%Vor%

Ein Problem mit dieser Technik besteht darin, dass der Trap erst wirksam wird, wenn der aktuelle Task zur Shell zurückkehrt (z. B. den Schlaf 1 durch Schlaf 10 ersetzen). Wenn die Shell die meiste Zeit die Kontrolle hat (zB wenn alle aufgerufenen Befehle schnell beendet werden), kann dies funktionieren. Eine Möglichkeit ist natürlich, alles im Hintergrund laufen zu lassen.

    
William Pursell 04.08.2009 12:28
quelle
0

Erstellen Sie ein Bash-Skript, das einmal prüft, ob die Internetverbindung unterbrochen ist, und fügen Sie das Skript in eine Crontab-Aufgabe ein, die alle 60 Sekunden ausgeführt wird.

    
David Aleu 04.08.2009 07:32
quelle

Tags und Links