¿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
usuario2413
fuente

Respuestas:

54

Simplemente use sleep 1en Bash.

for (( i = 1 ; i <= 160 ; i++ )); do
  sleep 1
  qsub myccomputations"${i}".pbs
done
concha
fuente
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.

Olli
fuente
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