Come controllare lo stato di “apt-get upgrade” dopo aver perso la connessione ssh?


16

Di solito aggiorno la mia installazione di Ubuntu tramite una connessione ssh. A volte questa connessione SSH andrebbe persa o avrei accidentalmente chiuso la finestra del terminale.

È possibile verificare lo stato dell'aggiornamento dopo un nuovo accesso ssh al computer?

Risposte:


33

I seguenti registri sono correlati agli aggiornamenti apt:

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

Se il comando era dist-upgrade, ci sono ulteriori log in:

/var/log/dist-upgrade

Cordiali saluti, di solito è sicuro rieseguire solo l'aggiornamento e apt continuerà da dove era stato interrotto quando il processo è morto a causa della disconnessione. Tuttavia...

A GNU Screen Primer:

Quando si avvia un server remoto e si avvia un processo di lunga durata in primo piano, è consigliabile utilizzare GNU Screen. Lo schermo fornisce un terminale virtuale che continua a funzionare anche se la connessione ssh viene persa.

Schermata di installazione:

sudo apt-get install screen

Esegui schermo:

screen

Dopo aver eseguito lo schermo riceverai un prompt della riga di comando come con un normale terminale. È quindi possibile eseguire l'aggiornamento dalla schermata interna:

sudo apt-get upgrade

Per capire come funziona, "staccare" lo schermo premendo Ctrl + a, d . Questo ti riporterà al terminale non schermo. Puoi vedere l'elenco delle schermate in esecuzione con

screen -list

Se hai solo una schermata in esecuzione, puoi ricollegarla con:

screen -raAd

(Questo stacca lo schermo nel caso in cui sia collegato altrove e lo ricollega al terminale che si sta attualmente eseguendo.)

In genere non è possibile scorrere "normalmente" dall'interno dello schermo senza alcuna impostazione aggiuntiva. Per scorrere all'interno dello schermo, premere Ctrl-Esc per accedere alla modalità cursore. È quindi possibile scorrere verso il basso e verso l'alto con j e k . Premi Esc nuovo per uscire dalla modalità cursore.

Ci sono molte più risorse in rete disponibili per funzioni di schermo aggiuntive. È uno strumento standard inestimabile per l'amministrazione del sistema.

Guarda anche:


2
+1 per rispondere effettivamente alla domanda E menzionare lo schermo :)
Nanne

2
Inoltre, screen -x- collega allo schermo in esecuzione senza staccare gli altri, rendendo la sessione dello schermo "multiplayer".
SF.

Questo è utile, ma include la prevenzione oltre alla risposta. Inoltre, viene citato il log corretto da guardare, ma un utente principiante potrebbe non avere familiarità con il tail -fcomando e l'opzione flag, che consentirà all'utente di osservare i progressi in tempo reale (o vedere che si è bloccato) su "ri accesso." So che è vecchio e accettato, ma penso che la coda dovrebbe essere aggiunta a questo set di istruzioni, perché in mancanza di questo dettaglio, la risposta di @TheAnonymousBear è più diretta e precisa. @doublerebel
oemb1905,

Spesso sudo dpkg --configure -acontinuerà l'upgrade apt, quando questa era ancora spesa.
danger89,

10

Oltre alla risposta di Doublerebel, ho notato un'alternativa oggi.

Sono andato a letto la scorsa notte dopo aver iniziato un aggiornamento su SSH. Ho stupidamente dimenticato di avviarlo screene ho perso la mia sessione SSH durante la notte.

Stavo per iniziare le ricerche rettyquando ho notato che rootera iniziata una screensessione.

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

Quindi ho elencato rootle schermate e le ho allegate:

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

E Bam! Ero tornato in gioco.


Pensavo ti fossi dimenticato di iniziare la schermata. Come funzionava lo schermo se "hai dimenticato di iniziare a schermo?"
oemb1905,

1
@ oemb1905 Perché Ubuntu ne avvia una per te, supponendo che te ne dimenticherai :)
Huckle

interessante, è questo con il do-release-upgradecomando specifico di Ubuntu? Non ho mai avuto bisogno di controllare Debian, che uso esclusivamente, perché lo eseguo sempre manualmente, lo stacco e poi torno. E, naturalmente, usiamo sudo apt dist-upgradedopo aver cambiato /etc/apt/sources.listinvece.
oemb1905,

L'ho trovato, sì, questo è specifico di Ubuntu, quindi qualsiasi persona Debian pura come me che corregge il problema da AskUbuntu non dovrebbe presumere che ciò accada sui loro sistemi.
Discussione

Come fa a sapere che avrai installato lo schermo?
Nacht - Ripristina Monica il

4

Per visualizzare l'output in tempo reale dal aptprocesso in background , utilizzare:

sudo tail -f /var/log/apt/term.log

Questa è la risposta corretta: la risposta sopra indica solo la posizione di alcuni registri utili, quindi passa alla prevenzione. Questa risposta mostra all'utente dove guardare e come guardarlo ( tail) dopo quello che hanno chiamato un "nuovo accesso".
oemb1905,

0

Aveva esattamente lo stesso problema, perso la mia connessione e il processo dpkg era in attesa di input.

Forse la prossima volta prova: sudo dpkg --configure -a


1
Quando provo questo, tutto ciò che ottengo è,"dpkg: error: dpkg frontend is locked by another process"
CivMeierFan,

Ho fatto un grep di contesto per vedere che per fortuna si trattava di un sottoprocesso che ha generato una finestra di messaggio in attesa di input, quindi sono stato in grado di ucciderlo senza uccidere l'intero processo di aggiornamento di apt.
CivMeierFan,

Questo approccio ignora le indagini sul fatto che il processo dpkg sia ancora in esecuzione sul sistema al momento dell'accesso. Inoltre, se è in esecuzione, questo potrebbe essere potenzialmente dannoso nella peggiore delle ipotesi, o semplicemente una cattiva pratica nella migliore delle ipotesi, poiché dpkg avrà un blocco su di esso /var/dpkg/lockse è ancora in esecuzione. Indipendentemente da ciò, non risponde alla domanda su come "controllare lo stato dell'aggiornamento" e, invece, funzionerà solo se l'aggiornamento si è arrestato in modo anomalo (e solo allora se il blocco non è attivo). Non consiglierei questo approccio a nessuno. Rispettosamente, oemb1905
oemb1905,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.