web-dev-qa-db-fra.com

Comment faire en sorte que bash script s'exécute avec une latence (c'est-à-dire attendre 1 seconde à chaque itération)?

J'ai ce script bash;

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

En gros, je préférerais qu’il y ait un délai d’une seconde entre chaque itération. La raison en est qu’à chaque itération, le fichier programme mycomputation"${i}$.pbs est envoyé à un noeud principal pour être résolu. La motivation est que, dans ce cas, la résolution implique l’utilisation de nombres pseudo aléatoires et que le RNG que j’utilise (R) utilise le temps CPU en tant que graine.

Alors, comment demander bash à

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

Utilisez simplement sleep 1 dans Bash.

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

Si vous souhaitez obtenir ce que votre sujet suggère, vous devez utiliser "at".

Voir

      man at

pour plus d'informations.

0
Olli