GNU/Linux >> Linux Esercitazione >  >> Linux

Sistema Linux congelato? Ecco 3 modi per affrontarlo

Linux è noto per essere molto stabile, ma anche il sistema più stabile può incontrare situazioni che lo rendono insensibile. Poi arriva la terribile sensazione mentre premi e tieni premuto "Power". Ci sono alcuni trucchi con Linux che si possono tentare in questo caso. A questo punto, non stiamo cercando di salvare alcun lavoro non salvato. Vogliamo trovare un modo per evitare un riavvio o almeno fornire il riavvio più pulito possibile per evitare il danneggiamento.

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 Stack utente, hai programmi in esecuzione. Più che probabile X server, un window manager e alcuni programmi. Puoi immaginare quell'elenco di programmi, incluso il server X, come un altro stack all'interno dello Stack utente. 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 stai utilizzando un desktop Linux, il tuo primo passo dovrebbe essere un tentativo di utilizzare la funzione di esecuzione del comando di gestione delle finestre (alt+f2 in Ubuntu). Se sei fortunato, apparirà prima o poi.

Quindi puoi eseguire xkill e punta il cursore sulla finestra defunta e fai clic su di essa.

Xkill funziona più velocemente dell'icona X tradizionale 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. Rianima un sistema Linux bloccato con console virtuali (TTY)

A volte, non sarai così fortunato, il sistema potrebbe sembrare completamente morto.

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 ), denominato anche TTY. Sono rappresentati sul filesystem come /dev/ttyX. Linux ha più VC a tua disposizione. Tentare di accedere a un altro 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 ti 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 richiedere un cambio di VC può richiedere un po' di tempo, quindi sii un po' paziente.

Se il tuo tentativo di cambiare la console virtuale ha esito positivo, ti verranno richiesti utente e password. Avrai quindi una console in modalità testo. Il tuo sistema dovrebbe riguadagnare un po' di stabilità qui, questo è in parte dovuto al fatto che la console virtuale su cui X e tutto il resto è in esecuzione non è più una priorità.

Una volta effettuato l'accesso, hai alcune opzioni.

  • Puoi tentare di uccidere un programma defunto con kill o uccidi tutti comando.
  • Puoi uccidere il window manager, il server X o il login manager. Questo ucciderà tutti i processi figlio 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 mollare ancora, ancora una volta, più che probabile un'illusione. Linux contiene 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 chiave Magic SysRq . Compilato e abilitato per impostazione predefinita nella maggior parte delle distribuzioni, solo un panico del kernel dovrebbe essere in grado di impedirne il funzionamento.

Per confermare che l'opzione è stata impostata quando il kernel è stato compilato, puoi provare a localizzare 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 è abilitato, esegui quanto segue:

sysctl kernel.sysrq

Sui sistemi precedenti, 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. Raccomando anche di testare e apprendere una serie di sequenze di tasti mentre il sistema è stabile. Quando si esegue una chiamata SysRq, il kernel tenterà di rispondere. Questa risposta può essere visualizzata solo se ti trovi in ​​una console virtuale da 1 a 6. Se non è possibile spostare lo stato attivo da X, non vedrai le risposte. Questo non significa che non funzioni.

Ci sono numerosi comandi che possono essere inviati. L'elenco completo può essere visto qui. Consiglio di memorizzare quanto segue:

Chiavi Descrizione
Alt + SysRq + r Toglie la tastiera dalla modalità raw, sottraendo il controllo a X
Alt + SysRq + e Invia SigTerm a tutti i processi, dando loro la possibilità di uscire con grazia
Alt + SysRq + i Invia SigKill a tutti i processi
Alt + SysRq + k Chiudi tutti i processi nella console virtuale corrente
Alt + SysRq + s Sincronizza tutti i filesystem montati, scaricando tutti i dati su disco
Alt + SysRq + u Rimonta tutto il filesystem in sola lettura
Alt + SysRq + b Riavvia il sistema all'istante, non si sincronizza o non smonta
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, dai 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 può 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 della console virtuale corrente.

Se il tuo sistema continua a non rispondere dopo la sequenza precedente, dovresti procedere alla sequenza successiva.

Alt + SysRq + r e i s u b

Quest'ultimo comando avvierà un riavvio di emergenza.

  • r :Rimuovi la tastiera dalla modalità raw
  • e :Invia SIGTERM a tutti i processi
  • io :Invia SIGKILL a tutti i processi
  • s :sincronizza tutti i filesystem montati
  • tu :rimontaggio di emergenza in sola lettura
  • b :riavvia istantaneamente il sistema

Ora sei dotato dello strumento migliore contro un sistema che non risponde che conosco. Puoi seguire questo video dal mio canale YouTube per una dimostrazione.

Spero che tu abbia imparato qualcosa di nuovo sulla gestione di un sistema Linux bloccato con questo articolo. Mi piacerebbe conoscere il tuo feedback in merito. Utilizza la sezione commenti e condividi i tuoi pensieri.


Linux
  1. Monitora il tuo sistema Linux nel tuo terminale con procps-ng

  2. Analizza il kernel Linux con ftrace

  3. Comprensione delle chiamate di sistema su Linux con strace

  4. Pianificazione delle attività di sistema con Cron su Linux

  5. Come controllare la versione del kernel su Linux

Test della penna con strumenti di sicurezza Linux

10 modi per iniziare con Linux

Comando Linux Uptime con esempi

Introduzione al sistema operativo Linux

Linux è un sistema operativo o un kernel?

5 modi per controllare le informazioni sulla CPU in Linux