¿Cómo hacer que el script bash se ejecute con una latencia (es decir, espere 1 segundo en cada iteración)?


28

Tengo este script bash;

for (( i = 1 ; i <= 160 ; i++ )); do
  qsub myccomputations"${i}".pbs
done

Básicamente, preferiría que hubiera un retraso de 1 segundo entre cada iteración. La razón es que en cada iteración, envía el archivo del programa mycomputation"${i}$.pbsa un nodo central para su resolución. La motivación es que resolver en este caso implica el uso de números pseudoaleatorios y el RNG que uso (R) usa el tiempo de CPU como semilla.

Entonces, ¿cómo pedirle a bash que

for (( i = 1 ; i <= 160 ; i++ )); do
  wait 1 sec    
  qsub myccomputations"${i}".pbs
done

Respuestas:


54

Simplemente use sleep 1en Bash.

for (( i = 1 ; i <= 160 ; i++ )); do
  sleep 1
  qsub myccomputations"${i}".pbs
done

puede usar el número de coma flotante si desea dormir menos de 1 segundo
shellholic

0

Si desea lograr lo que sugiere su tema, debe usar 'at'.

Ver

      man at

para más información.


1
gracias Olli De hecho, volveré a escribir el título, por lo que corresponde a la pregunta, para futuras consultas.
user2413

atno suspenderá un ciclo por una duración específica, sino que establecerá un programa / script para su ejecución en un momento específico.
Soren A
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.