Come far funzionare lo script bash con una latenza (ovvero attendere 1 secondo ad ogni iterazione)?


28

Ho questo script bash;

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

Fondamentalmente, preferirei che ci fosse un ritardo di 1 secondo tra ogni iterazione. Il motivo è che ad ogni iterazione, invia il file di programma mycomputation"${i}$.pbsa un nodo principale per la risoluzione. La motivazione è che la risoluzione in questo caso implica l'uso di numeri pseudo casuali e l'RNG che utilizzo (R) utilizza il tempo della CPU come seed.

Quindi, come chiedere a bash

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

Risposte:


54

Basta usare sleep 1in Bash.

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

puoi usare il numero in virgola mobile se vuoi dormire meno di 1 secondo
shellholic

0

Se vuoi ottenere ciò che suggerisce il tuo argomento, dovresti usare 'at'.

Vedere

      man at

per maggiori informazioni.


1
grazie Olli. In effetti, riscriverò il titolo, quindi corrisponde alla domanda, per domande future.
user2413,

atnon sospenderà un ciclo per una durata specifica, ma imposterà un programma / script per l'esecuzione in un momento specifico.
Soren,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.