Cara berhenti dan mulai ulang apt-get

2

Saya memiliki koneksi yang sangat lambat (~ 10KB / s) karena operator seluler saya mencekik saya. Sekarang, mereka akan mengirim sekitar 32KB, lalu berhenti.

Saya mencoba untuk menginstal paket melalui apt-get, dan saya perhatikan bahwa saya dapat berhenti (ctrl-c) kemudian restart instal dan itu akan mengambil dari mana ia tinggalkan.

Melakukan ini, saya bisa mendapatkan sedikit data, lalu menghentikannya, memulainya, dan saya mendapatkan sedikit lebih banyak data, jika tidak (tidak berhenti dan memulai kembali) saya harus menunggu sekitar 15 detik sebelum lebih banyak data datang

Apakah ada cara saya dapat mengotomatiskan ini dan meminta script-get berhenti dan mulai lagi?

Jacob Valenta
sumber

Jawaban:

4

Berikut ini adalah skrip yang menggunakan nama paket sebagai argumen dan berjalan apt-getberulang kali, membunuhnya setelah beberapa detik. Ini berjalan apt-getdalam mode "unduh", jadi itu hanya akan mengunduh, bukan menginstal. Anda mungkin ingin mengubah sleepwaktu tergantung pada seberapa cepat penyedia Anda mencekik unduhan.

#!/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
Tom Zych
sumber
2
Mengapa tidak menggunakan alat batas waktu GNU coreutils ? Seharusnya tidak perlu menemukan kembali roda.
CVn
Oh bagus sekali. Tidak tahu tentang itu. Terima kasih.
Tom Zych
Ditulis ulang untuk digunakan timeout.
Tom Zych
1

Saya percaya akan lebih baik untuk mencoba Ctrl+ Zmenunda proses di latar belakang. Anda mungkin dapat menggunakan fguntuk melanjutkan setelah konektivitas Anda kembali.

Untuk menjeda pekerjaan, tekan Ctrl+ Z.

Untuk memulai kembali pekerjaan ketika Anda mendapatkan sinyal jaringan:

fg %1
stderr
sumber
0

Anda mungkin ingin menggunakan apt-fast , ini mengunduh dari beberapa mirror secara paralel. Bahkan jika Anda memutuskan sambungan dari satu itu akan terus mengunduh dari mirror lain. Anda dapat mengunduh dan mengaturnya langsung dari halaman GitHub dari apt-fast yang didokumentasikan dengan sangat baik.

Parth Parikh
sumber