2009-12-16 2 views
16

Comment générer un processus après un délai dans un script shell? Je veux qu'une commande démarre 60 secondes après le démarrage du script, mais je veux continuer à exécuter le reste du script sans attendre 60 secondes d'abord. Voici l'idée:Script shell générant un processus après un délai

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

echo "B" 
echo "C" 

La sortie doit être

B 
C 
... 60 seconds later 
A 

Je dois pouvoir faire tout cela dans un script. C'est à dire. pas de création d'un deuxième script appelé depuis le premier script shell.

+0

le fait. simple et facile. court et doux – user1276046

Répondre

30

& commence un travail de fond, donc

sleep 60 && echo "A" & 
+0

J'ai été surpris de voir ce travail sans regroupement (parenthèses ou accolades). Merci :-) – Tanktalus

3

peut ne pas l'essayer en ce moment, mais

(sleep 60 && echo "A")&

devrait faire le travail

+0

oui, il le fait :) –

6

Une légère expansion sur les autres réponses est d'attendre les commandes en arrière-plan à la fin du script.

#!/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 
Questions connexes