2009-12-16 8 views
16

Wie kann ich einen Prozess nach einer Verzögerung in einem Shell-Skript erstellen? Ich möchte, dass ein Befehl 60 Sekunden nach dem Start des Skripts startet, aber ich möchte den Rest des Skripts weiter ausführen, ohne zuerst 60 Sekunden zu warten. Hier ist die Idee:Shell-Skript, das einen Prozess nach einer Verzögerung hervorbringt

#!/bin/sh 
# Echo A 60 seconds later, but without blocking the rest of the script 
sleep 60 && echo "A" 

echo "B" 
echo "C" 

Die Ausgabe sollte

B 
C 
... 60 seconds later 
A 

ich brauche, dies zu tun alles in einem Skript zu können. Ie. Kein Erstellen eines zweiten Skripts, das aus dem ersten Shell-Skript aufgerufen wird.

+0

es tut. simpel und einfach. kurz und süß – user1276046

Antwort

30

& startet einen Hintergrund-Job, so

sleep 60 && echo "A" & 
+0

Ich war überrascht, dass die Arbeit ohne Gruppierung (Klammern oder Klammern) zu sehen. Vielen Dank :-) – Tanktalus

3

Kann es jetzt nicht versuchen, aber

(sleep 60 && echo "A")&

die Arbeit machen sollte

+0

ja, tut es :) –

6

Eine leichte Ausweitung auf die anderen Antworten ist auf die Hintergrundbefehle am Ende des Skripts zu warten.

#!/bin/sh 
# Echo A 60 seconds later, but without blocking the rest of the script 

set -e 

sleep 60 && echo "A" & 
pid=$! 

echo "B" 
echo "C" 

wait $pid 
Verwandte Themen