Bagaimana membuat skrip bash dijalankan dengan latensi (mis. Tunggu 1 detik di setiap iterasi)?


28

Saya memiliki skrip bash ini;

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

Pada dasarnya, saya lebih suka jika ada penundaan 1 detik antara setiap iterasi. Alasannya adalah bahwa pada setiap iterasi, ia mengirimkan file program mycomputation"${i}$.pbske node inti untuk dipecahkan. Motivasinya adalah bahwa penyelesaian dalam hal ini melibatkan penggunaan angka acak semu dan penggunaan RNG (R) menggunakan waktu CPU sebagai seed.

Jadi bagaimana Anda meminta bash to

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

Jawaban:


54

Cukup gunakan sleep 1di Bash.

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

Anda dapat menggunakan nomor floating point jika Anda ingin tidur kurang dari 1 detik
shellholic

0

Jika Anda ingin mencapai apa yang disarankan topik Anda, Anda harus menggunakan 'at'.

Lihat

      man at

untuk informasi lebih lanjut.


1
terima kasih Olli. Memang, saya akan menulis ulang judul, sehingga sesuai dengan pertanyaan, untuk pertanyaan selanjutnya.
user2413

attidak akan menangguhkan loop untuk durasi tertentu, tetapi mengatur program / skrip untuk dieksekusi pada waktu tertentu.
Soren A
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.