2

У меня очень медленное соединение (~ 10 КБ / с), потому что мой оператор мобильной связи задушил меня. Теперь они отправят около 32 КБ, затем остановятся.

Я пытаюсь установить пакеты через apt-get, и я заметил, что могу остановить (ctrl-c), а затем перезапустить установку, и она продолжит с того места, где остановилась.

Делая это, я могу получить немного данных, затем остановить их, запустить и получить немного больше данных, в противном случае (без остановки и перезапуска) мне придется подождать около 15 секунд, прежде чем поступят новые данные

Есть ли способ, которым я могу автоматизировать это и заставить скрипт остановить apt-get и начать заново?

3 ответа3

4

Вот скрипт, который принимает имена пакетов в качестве аргументов и многократно запускает apt-get , убивая его через несколько секунд. Он запускает apt-get в режиме "загрузки", поэтому он будет только загружать, а не устанавливать. Вы можете настроить время sleep в зависимости от того, как быстро вашего поставщика дросселей загрузки.

#!/bin/bash

me=$(basename $0)

if (($# == 0))
then
    printf "Usage: %s package [package]...\n" $me
    exit 1
fi

printf "Will install %d package(s).\n" $#
printf "This will run forever.\n"
printf "You can stop it by pressing ctrl-C when prompted.\n"
printf "If that fails, open another window and type 'killall %s'.\n" $me
read -p "Press 'Enter' to continue: "

while :
do
    timeout 3 apt-get -y -d install "$@"
    printf "Press ctrl-C within one second to stop\n"
    sleep 1
done
1

Я считаю, что было бы лучше попробовать Ctrl + Z, чтобы приостановить процесс в фоновом режиме. Возможно, вы сможете использовать fg для возобновления после восстановления соединения.

Чтобы приостановить работу, нажмите Ctrl + Z.

Для повторного запуска задания при получении сигналов сети:

fg %1
0

Возможно, вы захотите использовать apt-fast, он загружается с нескольких зеркал параллельно. Даже если вы отключитесь от одного, он продолжит загрузку с других зеркал. Вы можете скачать и настроить его прямо со страницы GitHub apt-fast, это очень хорошо задокументировано.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .