Como fazer o script bash ser executado com uma latência (ou seja, esperar 1 segundo em cada iteração)?

22

Eu tenho este script bash;

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

Basicamente, eu preferiria se houvesse um atraso de 1 segundo entre cada iteração. O motivo é que em cada iteração, ele envia o arquivo de programa mycomputation"${i}$.pbs para um nó central para resolução. A motivação é que resolver neste caso envolve o uso de números pseudo-aleatórios e o RNG que eu uso (R's) usa o tempo de CPU como semente.

Então, como você pede bash para

for (( i = 1 ; i <= 160 ; i++ )); do
  wait 1 sec    
  qsub myccomputations"${i}".pbs
done
    
por user2413 17.02.2011 / 15:39

2 respostas

40

Basta usar sleep 1 no Bash.

for (( i = 1 ; i <= 160 ; i++ )); do
  sleep 1
  qsub myccomputations"${i}".pbs
done
    
por shellholic 17.02.2011 / 15:46
-1

Se você quiser alcançar o que seu tópico sugere, use 'at'.

Veja

      man at

para mais informações.

    
por Olli 17.02.2011 / 15:48