Как заставить 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
user2413
источник

Ответы:

54

Просто используйте sleep 1в Bash.

for (( i = 1 ; i <= 160 ; i++ )); do
  sleep 1
  qsub myccomputations"${i}".pbs
done
shellholic
источник
Вы можете использовать число с плавающей запятой, если вы хотите спать менее 1 секунды
shellholic
0

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

Видеть

      man at

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

Олли
источник
1
спасибо Олли. Действительно, я перепишу заголовок, чтобы он соответствовал вопросу для будущих запросов.
user2413
atне будет приостанавливать цикл на определенную продолжительность, но будет устанавливать программу / сценарий для выполнения в определенное время.
Сорен А