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.