Привести меня к лучшему решению для временной петли в Bashscript? - PullRequest
0 голосов
/ 24 февраля 2012

Сегодня я получил свой компьютер для работы над bashscript, который называется MF.sh ..

wget somefile1
wget somefile2
wget somefile3

Хорошо.Но somefiles familly нравится изменять каждую минуту, поэтому я написал этот удивительный кусок кода, повторяющий работу каждую минуту:

sleep 45
./MF.sh

Я закончил тем, что убил zilllion процесс в htop вручную.

Какова лучшая практика здесь?Какой тип цикла использовать?Где сломать?Использование управляющей переменной типа «i» - это просто соглашение?Как использовать минутное время, чтобы контролировать это?

РЕДАКТИРОВАТЬ (расширение вопроса вместо ответа на него)

Я пытался это

h=$(date +%R) 
for ($(date +%R) = $h)

     then

, чтобы пойматькогда меняется минута, но не получается.

Ответы [ 4 ]

3 голосов
/ 24 февраля 2012

Для повторных заданий вы можете использовать задание cron.

Настройте запись в вашем crontab, которая выглядит следующим образом:

1 * * * *       /path/to/MF.sh

Это будет выполняться MF.sh каждую минуту (* вместо 1 также будет работать). Например, если вы измените значение 1 на 3, оно будет выполняться каждые три минуты.

Не решение петли, но, на мой взгляд, это то, что вам нужно.

Справочные страницы для cron и crontab предоставят вам дополнительные инструкции, если вам это потребуется.

3 голосов
/ 24 февраля 2012

while зацикливается, пока его команда верна. true всегда верно.

while true
do ...
   ...
  if ...
  then
    break
  fi
   ...
done
1 голос
/ 22 ноября 2012

Оформить функцию timeout в coreutils.Это блестяще.

Быстрая проверка, я использовал:

timeout 10s cat

Через 10 секунд он убивает команду cat и дает мне код возврата 124.

http://swik.net/Unix/BASH+Cures+Cancer+Blog/timeout+%E2%80%93+new+coreutils+command/e2fml

0 голосов
/ 24 февраля 2012

Синтаксис для оператора if запрашивает скобки, подобные этой, из моего «окончательного» кода:

if [ $(date +%S) -eq 45 ]   # every minute, on 45 secs
    then
    ./GetFiles.sh       # starts files downloads script
    break
fi

Вы используете if, если используете решение Пока. Я пока не знаю for решение для этого. Я отредактирую этот ответ, когда получу его.

Ну, преступление вызова сценария из него не так уж плохо ... если вы знаете, что делаете (не в моем случае, смеется) Это называется рекурсия> http://tldp.org/LDP/abs/html/recursionsct.html

...