Magic SysRq Key, così sono definite quelle sequenze di tasti che permettono di comunicare direttamente con il Kernel Linux, scavalcando qualsiasi altra cosa. Ma cosa sono esattamente e come funzionano?

Immaginate di lavorare in un PC con ambiente GNU/Linux quando all’improvviso tutto si blocca. Il mouse non risponde più, lo schermo sembra non dare più segni di vita e la musica che stavate ascoltando si blocca come un giradischi, continuando a cantare sempre lo stesso motivetto. Cosa fareste in questo caso? Premereste il tasto Reset? Assolutamente NO! Per due motivi. Innanzitutto per una questione di orgoglio. Su ambienti Linux riavviare con un Reset, formattare in seguito ad un grave problema, passare a windows corrisponde ad una sconfitta. Siete voi a comandare il PC, non il contrario! In secondo luogo i filesystem utilizzati da Linux sono molto suscettibili ad arresti improvvisi e c’è il rischio di perdere gli ultimi dati modificati.

Per queste situazioni vengono in soccorso Magic SysRq Key.
Anche quando sembra che tutto sia bloccato, è molto probabile, grazie alla struttura a livelli di Linux, che il Kernel sia ancora operativo. I comandi SysRq servono proprio per comunicare con esso, il più basso livello del sistema operativo che è alla base di tutti i servizi, applicazioni e demoni avviati nel sistema.

Ad esempio è possibile terminare tutti i processi con segnale “SIGTERM” o “SIGKILL“, oppure decidere di uccidere solo il processo che occupa più memoria (utile nei casi in cui è solo un’applicazione ad essere impallata).

Ecco una lista di combinazioni di tasti:

Alt + Stamp + <una_delle_lettere_seguenti>

b – Riavvia il sistema senza smontare o fare in syncing dei dischi.
c – Effettua un riavvio di kexec per prendere un crashdump.
d – Mostra tutti i blocchi.
e – Invia a tutti i processi tranne a quelli di init un SIGTERM
f – Uccide il processo più esoso di memoria
g – Usa kgdb su piattaforme ppc e sh
h – Visualizza l’aiuto
i – Invia a tutti i processi eccetto quelli di init un SIGKILL
k – Secure Access Key (SAK) Uccide tutti i programmi sulla console virtuale corrente.
m – Visualizza informazioni della memoria .
n – Used to make RT tasks nice-able
o – Eseguie uno Shut Down del sistema (se configurato e supportato).
p – Visualizza i registri e flags correnti.
q – Mostra la lista di tutti i timers avviati.
r – Setta la tastiera in XLATE.
s – Esegue un sync di tutti i filesystem montati.
t – Mostra tutti i processi.
u – Rimonta tutti filesystems in sola lettura.
v – Mostra informazioni su processori Voyager SMP.
w – Visualizza tutti i tasks bloccati.
x – Usato dall’interfaccia xmon su piattaforme ppc/powerpc.
0-9 – Setta il livello di loging della console, mostrerà i messaggi del kernel sulla console.
(0 ad esempio fa in modo di mostrare solo i messaggi di emergenza quali PANICs or OOPSes )

Eh già, il tasto “stamp” non serve solo a fare screenshot, può diventare un amico indispensabile.

L’impressione che mi hanno dato questi comandi la prima volta che li ho usati è stata “questi non funzionano”. In effetti premendo t, per visualizzare i processi, non accade nulla, se non l’apertura della finestra dello screenshot in seguito alla pressione del tasto. Per vedere i comandi testuali, in effetti, bisogna andare in una console testuale. Quindi bisogna andare in tty1 (premendo Ctrl + Alt + F1).

In caso il computer si blocchi è bene eseguire come minimo questa successione di tasti: e – i – s – b. Analizziamo la sequenza:
e: Serve per terminare le applicazioni che ancora rispondono correttamente. Equivale a chiudere normalmente l’applicazione;
i: Forza la chiusura dei servizi bloccati inviando un segnale SIGKILL;
s: Smonta tutti i dischi salvando tutti i dati rimasti in attesa;
b: Esegue un hard-reset. Praticamente è come se premeste il tasto reset del PC, ma così è più trendy 😀

Perchè queste combinazioni funzionino bisogna che nel kernel sia abilitata l’opzione CONFIG_MAGIC_SYSRQ, ma nella maggior parte delle nuove distribuzioni non ci dovrebbero essere problemi perchè è attiva di default.