Как заставить bash-скрипт работать с задержкой (т.е. ждать 1 секунду на каждой итерации)?


28

У меня есть этот скрипт bash;

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

В принципе, я бы предпочел, чтобы между каждой итерацией была задержка в 1 секунду. Причина в том, что на каждой итерации он отправляет программный файл mycomputation"${i}$.pbsна основной узел для решения. Мотивация заключается в том, что решение в этом случае включает использование псевдослучайных чисел, а ГСЧ, который я использую (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 секунды
shellholic

0

Если вы хотите достичь того, что предлагает ваша тема, вы должны использовать «в».

Видеть

      man at

за дополнительной информацией.


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

atне будет приостанавливать цикл на определенную продолжительность, но будет устанавливать программу / сценарий для выполнения в определенное время.
Сорен А
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.