Я хочу запланировать большую загрузку для появления ночью между 12:00 и 5:00. Каждый день в 12:00 wget
должен автоматически взять, где это уехало накануне ночью, и в 5:00, это должно автоматически приостановить загрузку, таким образом, это может возобновиться следующей ночью.
Как я могу написать сценарий этого в Ubuntu? В каких инструментах я нуждаюсь?
Комбинация Новомодное задание и задание крона :
Первый, создайте Новомодное задание. Создайте файл, названный ~/.config/upstart/my-download.conf
содержащий:
description "My download job."
start on resume-download
stop on stop-download
respawn
respawn limit 10 5
script
cd /path/to/download/folder
wget --continue uri://link/to/download
end script
Теперь, добавьте задание крона, чтобы запустить и остановить это Новомодное задание. Выполненный EDITOR=gedit crontab -e
и добавляют к файлу:
0 0 * * * /sbin/initctl emit resume-download
0 5 * * * /sbin/initctl emit stop-download
можно вручную запустить загрузку любое время, которое Вы хотите использовать:
initctl emit resume-download
# or
start my-download
И остановка это любое время с помощью:
initctl emit stop-download
# or
stop my-download
<час> respawn
в задании, Выскочка попытается перезапустить wget
, если это выйдет. Это может быть полезно, если это испытало таймаут и вышло в два утром. Граница установлена так, чтобы у нас не было Выскочки, пытающейся запустить wget бесконечно (например, сеть стоит перед расширенными проблемами, загрузка была завершена, и т.д.). initctl emit
команды в задании крона. Этого пути, если мы создаем больше таких Новомодных заданий, все они запускающиеся на этом событии, эта единственная запись крона, будет достаточно для запуска всех их. Вы захотите использовать --continue
флаг из заданий крона и wget.
Вы можете иметь запись крона для запуска сценария в 12:00 с использования тайм-аута. См. https://serverfault.com/questions/257345/can-i-limit-the-runtime-of-a-cronjob. Или Вы могли выполнить другой сценарий, который уничтожает/прерывает его в 5:00.
Пример для ежедневного сценария: 0 0 * * * timeout -s KILL 5h /path/to/command
вышеупомянутый пример выполнит тайм-аут на/path/to/command в 12:00 в каждый день каждого месяца и отправит ему Сигнал уничтожения после 5 часов.
Это - то, как размечается задание крона:
minute (0-59), hour (0-23, 0 = midnight), day (1-31), month (1-12), weekday (0-6, 0 = Sunday) /path/to/command
звездочка (*) может использоваться так, чтобы каждый экземпляр (каждый час, каждый рабочий день, каждый месяц, и т.д.) периода времени использовались.