Як змусити сценарій bash запускатись із затримкою (тобто чекати 1 сек на кожну ітерацію)?


28

У мене є цей баш сценарій;

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

В основному я вважаю за краще, якби між кожною ітерацією була затримка на 1 секунду. Причина полягає в тому, що при кожній ітерації він надсилає програмний файл mycomputation"${i}$.pbsна основний вузол для вирішення. Мотивація полягає в тому, що розв’язання в цьому випадку включає використання псевдо випадкових чисел, а RNG, який я використовую (R), використовує час процесора як насіння.

То як вам попросити Баша

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

Відповіді:


54

Просто використовуйте sleep 1в Bash.

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

ви можете використовувати номер з плаваючою комою, якщо хочете спати менше 1 секунди
мистецький

0

Якщо ви хочете досягти того, що пропонує ваша тема, вам слід скористатись "на".

Побачити

      man at

для отримання додаткової інформації.


1
дякую, Оллі Дійсно, я перепишу заголовок, щоб він відповідав на запитання, для майбутніх запитів.
user2413

atне зупинить цикл протягом певної тривалості, але встановить програму / сценарій для виконання у певний час.
Soren A
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.