Bash betiğinin gecikme ile çalışmasını nasıl sağlayabilirim (yani, her tekrarda 1 saniye bekle)?


28

Ben bu bash betiği var;

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

Temel olarak, her yineleme arasında 1 saniyelik bir gecikme olsaydı tercih ederim. Bunun nedeni, her yinelemede, program dosyasını mycomputation"${i}$.pbsçözmek için bir çekirdek düğüme göndermesidir . Motivasyon, bu örnekte çözmenin sahte rastgele sayıların kullanımını içermesi ve kullandığım RNG'nin (R'ler) CPU zamanını tohum olarak kullanmasıdır.

Peki nasıl

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

Yanıtlar:


54

Basitçe sleep 1Bash'de kullanın .

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

1 saniyeden daha az uyumak istiyorsanız kayan nokta sayısını kullanabilirsiniz
kabuklu

0

Konunuzun önerilerini elde etmek istiyorsanız, 'at' kullanmalısınız.

Görmek

      man at

daha fazla bilgi için.


1
teşekkür ederim Olli. Aslında, başlığı tekrar yazacağım, bu nedenle gelecekteki sorgular için soruya karşılık geliyor.
user2413

atbelirli bir süre boyunca bir döngüyü askıya almaz, ancak belirli bir zamanda yürütmek için bir program / komut dosyası ayarlar.
Soren
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.