2012-03-29 8 views
10

Entonces, me preguntaba si había un comando bash que me permite bifurcar un proceso que duerme durante varios segundos, luego ejecuta un comando.Guión de Bash cómo dormir en un nuevo proceso y luego ejecutar un comando

He aquí un ejemplo:

sleep 30 'echo executing...' & 

^Esto no funciona realmente (porque el comando del sueño sólo toma el argumento de tiempo), pero ¿hay algo que podría hacer algo como esto? Entonces, básicamente, ¿un comando de suspensión que toma un argumento de tiempo y algo para ejecutar cuando se completa el intervalo? Quiero poder insertarlo en un proceso diferente y luego continuar procesando el script de shell.

Además, sé que podría escribir un script simple que hace esto, pero debido a algunas restricciones a la situación (en realidad estoy pasando esto a través de una llamada ssh), prefiero no hacer eso.

Respuesta

10

puede invocar otra bomba en el fondo y hacer que haga lo que quiere:

bash -c 'sleep 30; do-whatever-else' & 

El intervalo predeterminado para dormir es en cuestión de segundos, lo que lo anterior podría dormir durante 30 segundos. Puede especificar otros intervalos como: 30m durante 30 minutos o 1h durante 1 hora o 3d durante 3 días.

+0

Gracias! Eso hizo el truco. :) – David

21

Usted puede hacer

(sleep 30 && command ...)& 

usando && es más seguro que ; porque asegura que command ... sólo se ejecutará si el temporizador de apagado expira.

+0

¡Gracias! ¡Mucho más limpio! – cwohlman

Cuestiones relacionadas