Niveau :      
Résumé : sysrq ; sysrq-trigger ; sysrqd

Sysrq, nom de la touche clavier pour system request (aussi connue sous le nom de print-screen). Les magic-sysrq sont une fonctionnalité optionnelle du noyau utilisant cette touche. Lorsqu'elle est compilée dans votre noyau et activée, elle est disponible en utilisant la combinaison de touche alt-sysrq-X où X est une touche du clavier.

Ces touches sont particulièrement utiles en situation d'urgence. Les plus importantes à mémoriser sont 'sub'. Une utilisation typique ressemblera plutôt à 'rfesiub' (pensez a laisser un peu de temps entre les touches).

Les touches les plus courantes sont :

  • b : reboot pur et simple de la machine
  • e : termine proprement (SIGTERM) tous les processus
  • f : tue un processus consommateur de mémoire (au hasard)
  • h : affiche l'aide si vous êtes en console (la touche espace aussi)
  • i : tue (SIGKILL) tous les processus
  • k : tue les processus lancés dans la console en cours (dont xorg si c'est le cas), Cela permet de récupérer l'accès au clavier. Certaines mesures de sécurité exigent de l'utiliser avant de se logguer en console pour tuer d'éventuels keyloggers.
  • r : réinitialise le mode de fonctionnement du clavier (à la suite d'un crash de xorg par exemple)
  • s : synchronise les systèmes de fichier (pour ne pas avoir de problèmes avant un reboot violent)
  • u : passe les systèmes de fichier en lecture seule
  • 0-9 : change le loglevel des messages du noyau

Et d'autres plus rares :

  • c : lance un kexec
  • d : affiche les locks en cours
  • m : affiche un dump mémoire
  • n : utilisé pour le temps réel
  • o : éteint la machine (ne marche pas toujours)
  • p : affiche les registres du processeur
  • q : affiche les timers
  • t : affiche des informations sur les processus
  • w : affiche les processus bloqués

Il est possible de désactiver l'usage de ces fonctionnalités

$ echo 0 > /proc/sys/kernel/sysrq

Ou plus finement avec un nombre supérieur à 1 (voir /usr/src/linux/Documentation/sysrq.txt).

Et si vous êtes à distance vous pouvez faire appel à une de ces fonctions en ligne de commande :

$ echo s > /proc/sysrq-trigger

Et si vous êtes encore plus à distance (ssh ne fonctionne plus), il y a aussi moyen de les déclencher avec sysrqd. Sysrqd est un démon qui doit tourner sur la machine (bloquée donc bon courage). Et à ce moment :

# port 4094
$ telnet crashed.machine sysrqd