Wie starte ich ein Shell-Skript in einer Minute später in Linux?

8

Wie starte ich ein Shell-Skript in einer Minute?

Angenommen, es gibt zwei Bash-Dateien a.sh und b.sh
Ich möchte b.sh eine Minute (oder mehrere Sekunden) ausführen, nachdem a.sh ausgeführt wurde.
Was soll ich in a.sh programmieren?

    
Alex Chan 08.05.2012, 10:47
quelle

7 Antworten

17

Einfach. Sie möchten "at" verwenden, um Ihren Job zu planen. und "Datum", um deinen momentanen Zeitpunkt zu berechnen.

Beispiel:

%Vor%

oder:

%Vor%

-v+60S fügt der aktuellen Zeit 60 Sekunden hinzu. Sie können genau steuern, wie viele Sekunden Sie hinzufügen möchten.

Aber normalerweise, wenn Leute wollen, dass ein Programm eine Minute nach der anderen startet, sind sie nicht 100% sicher, dass es nicht mehr oder weniger als eine Minute dauern wird. das ist es. b.sh könnte gestartet werden, bevor a.sh beendet ist. oder a.sh könnte 30 Sekunden früher als "geplant" beendet sein und b.sh könnte schneller gestartet haben.

Ich würde ein anderes Modell empfehlen. Wo b.sh zuerst gestartet wird. a.sh erstellt beim Start eine temporäre Datei. Ausführen ist Aufgaben und lösche seine temporäre Datei am Ende. b.sh überwacht, ob die temporäre Datei erstellt und dann gelöscht wird. und beginne seine Aufgaben.

    
shigazaru 08.05.2012, 10:56
quelle
3

Sie können nur sleep :

%Vor%

Oder für kompliziertere Fälle können Sie den Befehl at verwenden:

%Vor%

Weitere Informationen finden Sie in der at man-Seite.

    
larsks 08.05.2012 10:50
quelle
2

Machen Sie die letzte Zeile von a.sh:

%Vor%

(Wenn sich b.sh nicht in einem Verzeichnis in PATH befindet, stellen Sie einen vollständigen Pfad zu b.sh her.)

    
William Pursell 08.05.2012 10:49
quelle
1

Verwenden Sie den Befehl at .

Siehe man at für die Verwendung.

    
iWantSimpleLife 08.05.2012 10:54
quelle
0

Sie können den Befehl verwenden, um Ihr Skript für 1 Minute zu schlafen.

%Vor%

Wenn Sie das 2. Skript aufrufen möchten

%Vor%     
David K 08.05.2012 10:51
quelle
0

Wenn Sie das zweite Skript einige Sekunden nach dem start des ersten Skripts ausführen möchten, können Sie dies im ersten tun:

%Vor%

und das in der zweiten:

%Vor%

Sie könnten die Anzahl der Sekunden als Argument von der ersten zur zweiten übergeben.

Leider macht at keine Zeitschritte feiner als eine Minute.

    
Dennis Williamson 08.05.2012 12:42
quelle
0

Planen Sie beide Skripts gleichzeitig in Cron und setzen Sie die erforderliche Verzögerung in b.sh.

    
ankit tyagi 13.09.2016 12:02
quelle

Tags und Links