Comment tuer une application qui a planté, ou comment faire face à un écran « figé » ?

From Deimos.fr / Bloc Notes Informatique
Jump to: navigation, search

On vous avait pourtant dit que « Linux c'est super parce que ça plante jamais ! ». Oui, mais voilà, ça fait 5 minutes que vous êtes impuissant devant votre écran figé, que votre clavier ne répond plus et que vous secouez votre souris dans tous les sens... Pas de panique : il y a un moyen de remédier au problème, et ce, de façon beaucoup moins brutale que les boutons Power ou Reset de votre ordinateur !

Plusieurs cas de figure peuvent se présenter :

  • Si le programme planté a été lancé en ligne de commande, que vous avez encore accès au terminal de lancement et que votre clavier fonctionne, tapez simplement [Ctrl]+[C]. Vous récupérerez la main, et toutes les fenêtres de
  • l'application disparaîtront.
  • Si le programme a été lancé de manière graphique (via un menu ou un double-clic sur une icône), ouvrez un terminal et saisissez la commande : ~$ killall -9 nom_du_programme.
  • Si la solution précédente ne fonctionne pas, vous pouvez remplacer le nom du programme par son PID (Process IDentifier). Pour déterminer quel est le PID de l'application qui a planté, utilisez la commande :
Command ps
~$ ps -ef 

Le motif correspond à une chaîne de caractères contenue dans le nom du programme incriminé. Par exemple, considérons que l'éditeur de Gnome, Gedit, ait planté, on entrera la commande :

Command ps
~$ ps -ef 

L'application se ferme et vous récupérez la main.

  • Si seule la souris vous a abandonné, n'oubliez pas que le raccourci clavier [Alt]+[F2] permet d'appeler le lanceur d'application. Vous pouvez saisir alors le nom de votre terminal de commandes (gnome-terminal sous Gnome ou konsole sous KDE), puis entrer une commande permettant de tuer l'application.
  • Si le serveur graphique X a planté et que votre clavier fonctionne toujours, il vous sera toutefois impossible de lancer ou d'utiliser une application graphique. Donc, impossible d'utiliser votre console graphique pour tuer l'application qui a provoqué le freeze de votre serveur graphique. Dans ce cas, il faut passer en mode texte tty (un mode texte absolu qui permet de communiquer directement avec le cœur de votre machine).

Pour cela, sous certaines distributions, un appui répété sur la touche [Windows] du clavier devrait faire l'affaire. Cette touche est parfois configurée pour permettre de passer de votre interface graphique aux différentes interfaces tty. Puis, après avoir saisi votre login et votre mot de passe, vous pourrez utiliser la commande kill, comme précisé ci-dessus.

Néanmoins, il se peut que la touche [Windows] ne soit pas configurée ainsi. Dans ce cas, les raccourcis [Ctrl]+[Alt]+[F1], [Ctrl]+[Alt]+[F2], [Ctrl]+[Alt]+[F3], [Ctrl]+[Alt]+[F4], [Ctrl]+[Alt]+[F5], etc. vous permettent de passer respectivement en mode tty1, tty2, tty3, etc. Pour revenir en mode graphique, utilisez [Alt]+[F7].

Ceci dépend en fait de ce qui est défini par défaut dans le fichier /etc/inittab (lignes du type 1:2345:respawn:/sbin/getty 38400 tty1, 2:23:respawn:/sbin/getty 38400 tty2, etc.), mais c'est ce que l'on observe sur la plupart des distributions.

  • Si malgré l'arrêt des applications responsables, votre système est toujours figé, alors il ne vous reste plus qu'à saisir la commande suivante, en mode tty, commande qui permet de redémarrer « proprement » :
Command shutdown
~$ shutdown -r now

Lorsque le problème est lié au serveur X, le plus simple consiste à redémarrer ce dernier. Pour ce faire, il suffit de taper au clavier la combinaison [Ctrl]+[Alt]+[Backspace]. Le serveur X va alors tuer toutes les applications graphiques et donc les sessions utilisateurs en cours, puis va se relancer. Vous revenez ainsi à l'écran de connexion.

Une autre solution consiste à utiliser une série de combinaisons clavier, basée sur la touche [Syst] ou [SysRq] (même touche que [Impr écran] ou [Print screen]), à taper dans un ordre bien défini :

  • [Alt]+[Syst]+[R] : place le clavier en mode « brut » (raw mode). Puis, essayez de presser [Ctrl]+[Alt]+[Backspace] pour tuer le serveur X. Si ça ne fonctionne pas, continuez avec ce qui suit.
  • [Alt]+[Syst]+[S] : ceci permet d'écrire toutes les données non sauvegardées sur le disque (on parle de « synchronisation » du disque).
  • [Alt]+[Syst]+[E] : pour envoyer un signal de terminaison à tous les processus, sauf à init.
  • [Alt]+[Syst]+[I] : pour tuer tous les processus actifs, sauf init.
  • [Alt]+[Syst]+[U] : pour démonter, puis remonter toutes les partitions en lecture seule (ceci évitera une vérification du système de fichiers au redémarrage).
  • [Alt]+[Syst]+[B] : pour redémarrer le système. Vous pouvez aussi presser le bouton reset de votre machine.

Ces combinaisons de touches permettent d'envoyer des commandes directement au noyau, commandes qui permettront d'enregistrer les fichiers ouverts malgré l'absence d'interface graphique, puisque cette dernière est gelée.

Attention, pour que cela fonctionne, il faut que votre noyau ait été compilé avec le support des « clefs magiques » (l'option CONFIG_MAGIC_SYSRQ doit être à « y »), et que celui-ci soit activé dans /proc (ce qui est pratiquement toujours le cas dans les distributions courantes du type Ubuntu ou Mandriva). Pour le vérifier :

Command
~$ grep CONFIG_MAGIC_SYSRQ /boot/config-2.6.15-27-386
CONFIG_MAGIC_SYSRQ=y
~$ cat /proc/sys/kernel/sysrq
1