2009-12-16 10 views
16

¿Cómo puedo generar un proceso después de un retraso en un script de shell? Quiero que comience un comando 60 segundos después de que comience el script, pero quiero seguir ejecutando el resto del script sin esperar primero 60 segundos. Esta es la idea:Shell script generando un proceso después de un retraso

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

echo "B" 
echo "C" 

La salida debe ser

B 
C 
... 60 seconds later 
A 

tengo que ser capaz de hacer todo esto en un guión. Es decir. no crear un segundo script que se invoque desde el primer script de shell.

+0

lo hace. simple y fácil. Corto y dulce – user1276046

Respuesta

30

& inicia un trabajo en segundo plano, por lo

sleep 60 && echo "A" & 
+0

Me sorprendió ver que el trabajo sin agrupar (paréntesis o llaves). Gracias :-) – Tanktalus

3

No puedo probarlo ahora mismo, pero

(sleep 60 && echo "A")&

debe hacer el trabajo

+0

sí, lo hace :) –

6

una ligera expansión en las otras respuestas es esperar los comandos de fondo al final del 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 
Cuestiones relacionadas