2012-05-08 13 views

Respuesta

17

Simple. desea usar 'at' para programar su trabajo. y 'fecha' para calcular su momento en el futuro.

Ejemplo:

echo b.sh | at now + 1 minute 

o:

echo b.sh | at -t `date -v+60S "+%Y%m%d%H%M%S"` 

-v+60S añade 60 segundos para el tiempo actual. Puede controlar exactamente cuántos segundos desea agregar.

Pero generalmente, cuando la gente quiere que un programa se lance un minuto después del otro, no están 100% seguros de que no demorará más o menos de un minuto. Eso es. b.sh podría iniciarse antes de que termine a.sh. o a.sh podría haber terminado 30 segundos antes que "planeado" y b.sh podría haber comenzado más rápido.

Recomendaría un modelo diferente. Donde b.sh se lanza primero. a.sh crea un archivo temporal cuando se inicia. ejecutar es tareas y eliminar su archivo temporal al final. b.sh mire para que se cree el archivo temporal y luego elimínelo. y comienza sus tareas.

+1

Sí, gracias! Es exactamente lo que quiero. Pero quizás haya un pequeño error? Dice "Fecha de opción inválida --v" –

+3

@alexchan: Las diferentes versiones de 'fecha 'admiten diferentes opciones. Pruebe: 'echo b.sh | en este momento + 1 minuto' –

+0

¿Se ejecutará b.sh en una ventana visual? ¿y cómo? –

2

Hacer la última línea de a.sh:

sleep 60 && b.sh 

(Si b.sh no está en un directorio en el PATH, hacen que una ruta completa al b.sh.)

3

Puede simplemente sleep:

a.sh 
sleep 60 
b.sh 

O para los casos más complicados se puede utilizar el comando at:

echo b.sh | at now + 1 minute 

Consulte la página del manual at para obtener más información.

+0

Probaré el último –

+0

No, ejecuta b.sh como se esperaba, ¿cómo ejecutarlo después de 10 segundos? Cambié el minuto a segundo, dice error de sintaxis. –

+0

@alexchan: 'at' no hace incrementos de tiempo superiores a un minuto. –

0

Puede usar el comando para dormir su secuencia de comandos durante 1 minuto.

sleep 1m 

Luego, cuando se desea llamar el segundo guión

bash a.sh 
0

Si desea ejecutar el segundo guión cierto número de segundos después del inicio del primer guión, puede hacerlo en la primera:

b.sh & 

y esto en la segunda:

sleep 10 
# more commands 

Puede pasar el número de segundos como argumento desde el primero hasta el segundo.

Desafortunadamente, at no hace incrementos de tiempo superiores a un minuto.

0

Programe las secuencias de comandos para que se ejecuten al mismo tiempo en cron y ponga el retraso requerido en b.sh.

Cuestiones relacionadas