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
pengguna2413
sumber

Jawaban:

54

Cukup gunakan sleep 1di Bash.

for (( i = 1 ; i <= 160 ; i++ )); do
  sleep 1
  qsub myccomputations"${i}".pbs
done
shellholic
sumber
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.

Olli
sumber
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