3 modi per gestire un sistema Linux congelato
Quindi il tuo sistema Linux non risponde? Ecco vari modi per gestire un sistema Linux congelato.
Linux è noto per essere molto stabile, ma anche il sistema più stabile può incontrare situazioni che ne impediscono la risposta. Poi arriva la sensazione terribile quando premi e tieni premuto "Power". In questo caso si possono tentare alcuni trucchi con Linux. A questo punto, non stiamo cercando di salvare il lavoro non salvato. Vogliamo trovare un modo per evitare un riavvio o almeno fornire il riavvio più pulito possibile per evitare la corruzione.
Ai fini di questo articolo, Linux può essere visto come un insieme di 2 stack: lo stack del kernel e lo stack dell'utente. Da qualche parte all'interno dello User Stack, ci sono programmi in esecuzione. Molto probabilmente un server X, un gestore di finestre e alcuni programmi. Puoi immaginare quell'elenco di programmi, incluso il server X, come un altro stack all'interno dello User Stack. Questo concetto aiuterà i nuovi utenti Linux a comprendere alcune delle attività che eseguiremo in seguito.
1. Uccidi un programma che non risponde con xkill
Se utilizzi un desktop Linux, il primo passo dovrebbe essere un tentativo di utilizzare la funzionalità di esecuzione del comando del gestore delle finestre (alt+f2 in Ubuntu). Se sei fortunato, apparirà prima o poi.
Quindi puoi eseguire xkill e puntare il cursore sulla finestra defunta e fare clic su di essa.
Xkill funziona più velocemente della tradizionale icona X o facendo clic con il pulsante destro del mouse sulla finestra sulla barra delle applicazioni e facendo clic su Chiudi. Xkill uccide istantaneamente senza fare domande.
2. Ripristina un sistema Linux congelato con console virtuali (TTY)
A volte, non sarai così fortunato, il sistema potrebbe sembrare completamente morto.
Questa potrebbe essere solo un'illusione. Ricordi lo stack di programmi all'interno dello stack utente? Lavoriamo un po' con questa immagine.
Anche se può sembrare che la radice dello stack utente sia X. Non lo è.
X Window System viene eseguito su una console virtuale (VC), chiamata anche TTY. Sono rappresentati sul filesystem come /dev/ttyX. Linux ha più VC a tua disposizione. Tentare di accedervi può restituirti il controllo.
Puoi richiedere un VC diverso premendo CTRL+ALT+F{1,6} da un ambiente GUI o ALT+F{1,6} da un altro VC. La sequenza di tasti sopra dà accesso a VC da 1 a 6. L'interfaccia grafica funziona su VC 7+.
Quando si ha a che fare con un sistema instabile, anche la richiesta di un cambio di VC può richiedere un po' di tempo, quindi sii paziente.
Se il tuo tentativo di modificare la console virtuale ha esito positivo, ti verranno richiesti utente e password. Avrai quindi una console in modalità testo. Il tuo sistema dovrebbe riacquistare una certa stabilità qui; questo è in parte dovuto al fatto che la console virtuale su cui sono in esecuzione X e tutto il resto non è più una priorità.
Una volta effettuato l'accesso hai alcune opzioni.
Puoi tentare di terminare un programma defunto con kill o killall comando.
-
Puoi uccidere il gestore delle finestre, il server X o il gestore degli accessi. Questo ucciderà tutti i processi figli e, se tutto va bene, il tuo gestore degli accessi si riavvierà presentandoti la schermata di accesso grafica.
3. Quando tutto il resto fallisce, parla con il kernel usando SysReq
A volte, anche il passaggio a un TTY non funziona. L'intero sistema è morto. Non arrenderti ancora, ancora una volta, molto probabilmente un’illusione. Linux ha un'altra funzionalità per situazioni come questa.
Se compilato nel kernel e abilitato in un file, Linux fornisce i mezzi per inviare richieste preimpostate direttamente al kernel. Ciò è utile in una situazione in cui l'intero stack utente è morto. È noto come tasto Magic SysRq. Compilato e abilitato per impostazione predefinita nella maggior parte delle distribuzioni, solo un Kernel Panic dovrebbe essere in grado di impedirne il funzionamento.
Per confermare che l'opzione è stata impostata al momento della compilazione del kernel, puoi provare a individuare il file di configurazione del tuo kernel attuale in /boot. Cerca l'opzione CONFIG_MAGIC_SYSRQ. Come accennato in precedenza è compilato e abilitato nella maggior parte delle distribuzioni. Per confermare che sia abilitato, eseguire quanto segue:
sysctl kernel.sysrq
Sui sistemi più vecchi avevi 2 opzioni: 0 e 1. Era OFF o ON. Su quelli più recenti, c'è un controllo più preciso su quali comandi sono abilitati.
Qualsiasi valore superiore a 1 indica che alcuni comandi sono abilitati. Maggiori dettagli possono essere trovati qui.
Per impostare temporaneamente un valore diverso, eseguire il comando seguente:
sudo sysctl -w kernel.sysrq=value
Per modificare questo valore in modo permanente, modifica /etc/sysctl.conf. Cerca kernel.sysrq e imposta il valore desiderato.
Il modo più semplice per vedere se funziona è provare. Consiglio inoltre di testare e apprendere una serie di sequenze di tasti mentre il sistema è stabile. Quando esegui una chiamata SysRq, il kernel tenterà di rispondere. Questa risposta può essere vista solo se ti trovi in una console virtuale da 1 a 6. Non vedrai le risposte se non è possibile spostare il focus da X. Ciò non significa che non funziona.
È possibile inviare numerosi comandi. L'elenco completo può essere visualizzato qui. Consiglio di memorizzare quanto segue:
- Alt + SysRq + r
Toglie la tastiera dalla modalità raw, togliendo il controllo a X
- Alt + SysRq + e
Invia SigTerm a tutti i processi, dando loro la possibilità di uscire con garbo
- Alt + SysRq + i
Invia SigKill a tutto il processo
- Alt + SysRq + k
Uccidi tutti i processi nella console virtuale corrente
- Alt + SysRq + s
Sincronizza tutti i filesystem montati, scaricando tutti i dati sul disco
- Alt + SysRq + u
Rimontare tutto il filesystem in sola lettura
- Alt + SysRq + b
Riavvia il sistema immediatamente, senza sincronizzarlo né smontarlo
- Alt + SysRq + o
Sistema di spegnimento
Questo breve elenco di comandi ti offre un nuovo potente strumento quando hai a che fare con un sistema instabile. Quando invii una richiesta, se non riesci a vedere le risposte del kernel, concedi qualche secondo tra i comandi. Prestare attenzione alla spia dell'HDD quando si richiede il funzionamento dell'HDD.
Ci sono 2 sequenze che vale la pena ricordare.
Alt + SysRq + r e k
Questa sequenza è utile per riavviare un server X che non risponde. Per prima cosa fai uscire la tastiera dalla modalità raw con Alt + SysRq + r. Quindi richiedi di inviare un SIGTERM a tutti i processi con Alt + SysRq + e. Il server X potrebbe riavviarsi con questa richiesta. Se è così, hai salvato il tuo sistema. In caso contrario, procedi con la terza richiesta, Alt + SysRq + k. Che invierà SIGKILL a tutti i processi all'interno dell'attuale console virtuale.
Se il sistema continua a non rispondere dopo la sequenza precedente, procedere con la sequenza successiva.
Alt + SysRq + r e i s u b
Quest'ultimo comando avvierà un riavvio di emergenza.
r: disattiva la modalità raw della tastiera
e: invia SIGTERM a tutti i processi
i: invia SIGKILL a tutti i processi
s: sincronizza tutti i filesystem montati
u: rimontaggio di emergenza di sola lettura
b: riavvia immediatamente il sistema
Ora disponi dello strumento migliore contro un sistema che non risponde che io conosca. Puoi seguire questo video dal mio canale YouTube per una dimostrazione.
Spero che tu abbia imparato qualcosa di nuovo su come gestire un sistema Linux congelato con questo articolo. Mi piacerebbe sapere il tuo feedback in merito. Utilizza la sezione commenti e condividi i tuoi pensieri.