Bagaimana cara memeriksa status “apt-get upgrade” setelah kehilangan koneksi ssh?

16

Biasanya saya memutakhirkan instalasi Ubuntu saya melalui koneksi ssh. Terkadang koneksi ssh ini akan hilang atau saya secara tidak sengaja menutup jendela terminal.

Apakah mungkin untuk memeriksa status pemutakhiran setelah ssh masuk kembali ke komputer?

Josema
sumber

Jawaban:

33

Log berikut ini terkait dengan peningkatan apt:

/var/log/apt/history.log
/var/log/apt/term.log
/var/log/dpkg.log

Jika perintah itu dist-upgrade, ada log tambahan di:

/var/log/dist-upgrade

FYI, biasanya aman untuk hanya menjalankan kembali upgrade dan apt akan melanjutkan di mana ia tinggalkan ketika proses mati karena terputusnya koneksi. Namun...

Primer Layar GNU:

Ketika ssh'ing ke server jauh dan memulai proses yang sudah berjalan lama di latar depan, adalah praktik terbaik untuk menggunakan Layar GNU. Layar menyediakan terminal virtual yang terus berjalan bahkan jika koneksi ssh Anda terputus.

Pasang layar:

sudo apt-get install screen

Jalankan layar:

screen

Setelah layar berjalan, Anda akan mendapatkan prompt baris perintah seperti pada terminal normal. Anda kemudian dapat menjalankan pemutakhiran dari dalam layar:

sudo apt-get upgrade

Untuk memahami cara kerjanya, "lepas" layar dengan menekan Ctrl + a, d . Ini akan mengembalikan Anda ke terminal non-layar. Anda dapat melihat daftar layar yang sedang berjalan

screen -list

Jika Anda hanya menjalankan satu layar, Anda dapat memasangnya kembali dengan:

screen -raAd

(Layar ini terlepas jika terpasang di tempat lain, dan pasang kembali ke terminal yang sedang Anda jalankan.)

Biasanya Anda tidak dapat menggulir 'normal' dari dalam layar tanpa beberapa pengaturan tambahan. Untuk menggulir di dalam layar, tekan Ctrl-Esc untuk masuk ke mode kursor. Anda kemudian dapat menggulir ke bawah dan ke atas dengan j dan k . tekan Esc lagi untuk keluar dari mode kursor.

Ada banyak lagi sumber daya di internet yang tersedia untuk fungsi layar tambahan. Ini adalah alat standar yang sangat berharga untuk administrasi sistem.

Lihat juga:

doublerebel
sumber
2
+1 voor benar-benar menjawab pertanyaan DAN menyebutkan layar :)
Nanne
2
Juga, screen -x- lampirkan layar yang sedang berjalan tanpa melepaskan orang lain, menjadikan sesi layar "multipemain"
SF.
Ini membantu, tetapi termasuk pencegahan selain jawabannya. Selain itu, log yang benar untuk dilihat dikutip, tetapi pengguna pemula mungkin tidak terbiasa dengan opsi tail -fperintah dan bendera, yang akan memungkinkan pengguna untuk mengamati kemajuan secara real-time (atau melihat bahwa itu crash) pada "re- Gabung." Saya tahu yang lama dan diterima, tetapi saya pikir ekor harus ditambahkan ke set instruksi ini, karena dalam kekurangan detail ini, jawaban di bawah ini oleh @TheAnonymousBear lebih langsung dan to the point. @doublerebel
oemb1905
10

Selain jawaban doublerebel, saya perhatikan alternatif hari ini.

Saya pergi tidur tadi malam setelah memulai upgrade melalui SSH. Saya bodoh lupa untuk memulainya screendan kehilangan sesi SSH saya dalam semalam.

Saya baru saja akan mulai meneliti rettyketika saya perhatikan bahwa rootsudah memulai screensesi.

me@GAMMA:~$ ps aux | grep -E 'release|upgrade|apt'
root      6208  0.0  0.0  29140  1628 ?        Ss   01:57   0:05 SCREEN -e \0\0 -L -c screenrc -S ubuntu-release-upgrade-screen-window /tmp/ubuntu-release-upgrader-1h6_g4/raring --mode=server --frontend=DistUpgradeViewText
root      6209  0.2  5.6 287428 93144 pts/2    Ss+  01:57   3:13 /usr/bin/python /tmp/ubuntu-release-upgrader-1h6_g4/raring --mode=server --frontend=DistUpgradeViewText
root      6239  0.0  0.0  50052  1184 ?        Ss   01:58   0:00 /usr/sbin/sshd -o PidFile=/var/run/release-upgrader-sshd.pid -p 1022
root      7306  0.0  4.6 287432 77284 pts/2    S+   02:43   0:08 /usr/bin/python /tmp/ubuntu-release-upgrader-1h6_g4/raring --mode=server --frontend=DistUpgradeViewText
me       26829  0.0  0.0   9440   956 pts/5    S+   22:18   0:00 grep --color=auto -E release|upgrade|apt

Jadi saya mendaftarkan rootlayar dan melampirkannya:

me@GAMMA:~$ sudo screen -list
There is a screen on:
        6208.ubuntu-release-upgrade-screen-window       (12/11/2013 01:57:58 AM)        (Detached)
1 Socket in /var/run/screen/S-root.
me@GAMMA:~$ sudo screen -x -r

Dan Bam! Saya kembali dalam permainan.

Huckle
sumber
Saya pikir Anda lupa memulai layar. Bagaimana layar berjalan jika Anda "lupa memulai di layar?"
oemb1905
1
@ oemb1905 Karena Ubuntu memulai satu untuk Anda, dengan asumsi bahwa Anda akan lupa :)
Huckle
menarik, apakah ini dengan do-release-upgradeperintah khusus untuk ubuntu? Saya tidak pernah memiliki kebutuhan untuk memeriksa Debian, yang saya gunakan secara eksklusif, karena saya selalu menjalankannya secara manual, melepaskan, dan kemudian kembali. Dan, tentu saja, kami gunakan sudo apt dist-upgradesetelah mengubah /etc/apt/sources.listsebagai gantinya.
oemb1905
Saya menemukannya, ya ini khusus untuk Ubuntu sehingga setiap orang Debian murni seperti saya yang memperbaiki perburuan dari AskUbuntu seharusnya tidak menganggap ini akan terjadi pada sistem mereka. Utas asli pada topik ini: serverfault.com/questions/387547/…
oemb1905
Bagaimana ia tahu Anda akan memasang layar?
Nacht - Pasang kembali Monica
4

Untuk melihat output real-time dari aptpekerjaan latar belakang , gunakan:

sudo tail -f /var/log/apt/term.log
TheAnonymousBear
sumber
Ini adalah jawaban yang benar - jawaban di atas hanya menyatakan lokasi beberapa log bermanfaat kemudian beralih ke pencegahan. Jawaban ini menunjukkan kepada pengguna ke mana harus mencari, dan bagaimana melihatnya ( tail) setelah apa yang mereka sebut "login ulang."
oemb1905
0

Punya masalah yang sama persis, kehilangan koneksi saya dan proses dpkg sedang menunggu input.

Mungkin lain kali coba: sudo dpkg --configure -a

Sebastian Faujour
sumber
1
Ketika saya mencoba ini, yang saya dapatkan adalah,"dpkg: error: dpkg frontend is locked by another process"
CivMeierFan
Saya melakukan konteks grep untuk melihat bahwa untungnya itu adalah subproses yang menghasilkan dialog pesan menunggu input, jadi saya bisa langsung membunuhnya tanpa membunuh seluruh proses upgrade yang tepat.
CivMeierFan
Pendekatan ini mengabaikan investigasi apakah proses dpkg masih berjalan pada sistem setelah relogin. Selain itu, jika sedang berjalan, maka ini bisa berpotensi berbahaya paling buruk, atau hanya praktik buruk yang terbaik, karena dpkg akan memiliki kunci di dalamnya /var/dpkg/lockjika masih berjalan. Dan terlepas dari itu, itu tidak menjawab pertanyaan tentang bagaimana "untuk memeriksa status peningkatan" dan, sebaliknya, hanya akan bekerja jika pemutakhiran macet (dan hanya kemudian jika kunci tidak aktif). Saya tidak akan merekomendasikan pendekatan ini kepada siapa pun. Dengan hormat, oemb1905
oemb1905