Généralités système Linux

Sysrq ou Les touches magiques

Cet article a été mis à jour, vous consultez ici une archive de cet article!
Table des matières

Les touches magiques ?? Qu'est ce que c'est que ce truc ?





Non, ce n'est pas un jeu.

Non, ce n'est pas une blague.



Les touches magiques sont des combinaisons de touches qui peuvent vous permettre de redémarrer une machine proprement, ou même de tuer un programme trop gourmand en cas de paralysie totale du système.



Ce sont des appels directs au noyau linux, cet article n'est pas à prendre à la rigolade.



Et ça marche à tous les coups ?





Et bien, cela fonctionne dans la plupart des cas où la machine est bloquée.

Les touches magiques ne fonctionneront que si le noyau (kernel) n'est pas planté lui aussi (kernel panic).

Le kernel panic est reconnaissable par les voyants NUM LOCK, MAJ LOCK ou SCROLL LOCK clignotants.


Avant d'éteindre sauvagement l'ordinateur, testez ceci, cela évitera de perdre d'éventuelles données.



Pour savoir si la fonctionnalité est disponible sur le système (c'est le cas sur la plupart des distributions Linux actuelles), vérifier si le fichier /proc/sys/kernel/sysrq contient 1.



Code BASH :
adrien@superlinux: ~  $ cat /proc/sys/kernel/sysrq
1






Quelles sont ces touches magiques ?





Les touches magiques fonctionnent de cette façon :

Appui sur Alt + System Request + *touche*.



La touche "System Request" est généralement placée sur la même touche que la touche "Imprim Ecran". Son nom étant assez long, vous trouverez écrit sur la touche Sys Req ou Syst.



Sur un ordinateur portable, il est peut être nécessaire d'appuyer sur Fn (la touche Fonction) pour activer la touche System Request.

La combinaison devient alors Alt + Fn + System Request + *touche*.






*touche* : signification des combinaisons possibles





Voici un tableau récapitulatif des différentes combinaisons :



Combinaison

Action

Alt + Syst Req + r Permet de se réapproprier le clavier (bien souvent capturé par l'interface graphique)
Alt + Syst Req + 0 à 9 Permet de définir le niveau de LOG dans la console et dans le fichier /var/log/mesages
Alt + Syst Req + b Redémarre immédiatement le système (attention, action violente pouvant entraîner la perte de données car ne synchronise pas les disques, ni même écrit ce qui est en mémoire cache)
Alt + Syst Req + c Redémarre le processus kexec
Alt + Syst Req + e Envoie un signal SIGTERM à tous les processus à l'exception d'init.
Alt + Syst Req + f Tue le processus qui consomme le plus de mémoire (avec la fonction oom_kill)
Alt + Syst Req + i Envoie le signal SIGKILL à tous les processus à l'exception d'init.
Alt + Syst Req + k Tue tous les processus de la console active (y compris l'interface graphique si l'interface graphique est lancée).
Alt + Syst Req + l Envoie le signal SIGKILL à tous les processus y compris init.
Alt + Syst Req + m Affiche les informations relatives à la mémoire (appuyer sur la touche virgule si cela ne fonctionne pas avec m : AZERTY/QWERTY)
Alt + Syst Req + o Arrête immédiatement le système (attention, action violente pouvant entraîner la perte de données car ne synchronise pas les disques, ni même écrit ce qui est en mémoire cache)
Alt + Syst Req + p Affiche les informations relatives aux registres courants et aux flags dans la console
Alt + Syst Req + s Synchronise les systèmes de fichiers montés (Permet d'écrire sur disque ce qui est en mémoire cache). Utile pour éviter de perdre des données.
Alt + Syst Req + t Affiche la liste des différentes tâches actives ainsi que des informations pour chacune d'entre elles.
Alt + Syst Req + u Passe tous les systèmes de fichiers montés en lecture seule. Cela évitera une vérification des systèmes de fichiers au prochain redémarrage.




Comment Lancer une séquence





Pour lancer plusieurs combinaisons (comme je vous indique ci-dessous), appuyer sur Alt + Syst Req + *touche1* , laisser enfoncé Alt et Syst Req, puis relâcher la touche1, attendre 1 seconde pour que l'action précédente ait été prise en compte, et appuyer sur la deuxième touche, etc...



Un exemple avec la combinaison SEIUB (pour redémarrer proprement la machine en cas de plantage total) Ne faites pas l'exemple, c'est pour vous illustrer !!!



Enfoncer Alt + Enfoncer Syst Req + Appuyer sur S + Relâcher S + Attendre une seconde + Appuyer sur E + Relâcher E + Attendre une seconde + Appuyer sur I + Relâcher I + Attendre une seconde + Appuyer sur U + Relâcher U + Attendre une seconde + Appuyer sur B + Relâcher B + Relâcher Alt et Syst Req





Quelques manipulations de secours ....







Halte, j'ai lancé une application trop gourmande en RAM





Si comme moi, il vous arrive de lancer une Machine virtuelle par exemple, alors que vous étiez juste en RAM, le système se bloque.

On peut appeler les touches magiques à la rescousse ....



Lancer la séquence suivante :

  • Alt + Syst Req + s (synchronisation, toujours synchroniser au cas où)
  • Alt + Syst Req + f (kill de l'application la plus gourmande en RAM)







Mon système est complètement figé, comment le redémarrer proprement ?





Après une manip hasardeuse, ou un bug, le système est complètement bloqué. Le passage en tty via Ctrl+Alt+F2 ne fonctionne pas ?

Avant d'éteindre "à la sauvage", testez cette combinaison :



  • Alt + Syst Req + r (On se réapproprie le clavier) - facultatif, ça marche en principe sans
  • Alt + Syst Req + s (Son synchronise, toujours synchroniser !)
  • Alt + Syst Req + e (On tue proprement les processus) - facultatif
  • Alt + Syst Req + i (On tue les processus récalcitrants un peu plus violemment) - facultatif
  • Alt + Syst Req + u (On démonte et remonte les fichiers en lecture seule)
  • Alt + Syst Req + b (On redémarre l'ordinateur)





Pour résumer, version courte : SUB

version plus propre : SEIUB





Pour les curieux ....





Les actions des touches Magiques sont journalisées dans les journaux systèmes.



Voici un exemple, lors d'une Synchronisation d'urgence des disques :



Code BASH :
tailf /var/log/messages
Mar 17 21:14:01 superlinux kernel: [289425.155210] SysRq : Emergency Sync
Mar 17 21:14:01 superlinux kernel: [289425.165201] Emergency Sync complete