Запланируйте большую загрузку для возобновления каждый день в определенном промежутке дня?

Я хочу запланировать большую загрузку для появления ночью между 12:00 и 5:00. Каждый день в 12:00 wget должен автоматически взять, где это уехало накануне ночью, и в 5:00, это должно автоматически приостановить загрузку, таким образом, это может возобновиться следующей ночью.

Как я могу написать сценарий этого в Ubuntu? В каких инструментах я нуждаюсь?

1
задан 12 September 2014 в 23:00

2 ответа

Комбинация Новомодное задание и задание крона :

Первый, создайте Новомодное задание. Создайте файл, названный ~/.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
<час>
  1. из-за respawn в задании, Выскочка попытается перезапустить wget, если это выйдет. Это может быть полезно, если это испытало таймаут и вышло в два утром. Граница установлена так, чтобы у нас не было Выскочки, пытающейся запустить wget бесконечно (например, сеть стоит перед расширенными проблемами, загрузка была завершена, и т.д.).
  2. Мы добавили initctl emit команды в задании крона. Этого пути, если мы создаем больше таких Новомодных заданий, все они запускающиеся на этом событии, эта единственная запись крона, будет достаточно для запуска всех их.
2
ответ дан 11 November 2019 в 09:32

Вы захотите использовать --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

звездочка (*) может использоваться так, чтобы каждый экземпляр (каждый час, каждый рабочий день, каждый месяц, и т.д.) периода времени использовались.

0
ответ дан 11 November 2019 в 09:32

Другие вопросы по тегам:

Похожие вопросы: