Como fazer com que o script bash seja executado com uma latência (ou seja, aguarde 1 segundo a cada iterações)?


28

Eu tenho esse 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, a cada iteração, ele envia o arquivo do programa mycomputation"${i}$.pbspara um nó principal para solução. A motivação é que a solução nesse caso envolve o uso de números pseudo-aleatórios e o RNG I use (R's) usa o tempo da CPU como semente.

Então, como você pede ao bash para

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

Respostas:


54

Basta usar sleep 1no Bash.

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

você pode usar o número de ponto flutuante se você quiser dormir menos de 1 segundo
shellholic

0

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

Vejo

      man at

Para maiores informações.


11
obrigado Olli. Na verdade, vou reescrever o título, para que ele corresponda à pergunta, para consultas futuras.
user2413

atnão suspenderá um loop por um período específico, mas definirá um programa / script para execução em um horário específico.
Soren Um
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.