123 votes

Que faire lorsque Ctrl-C n'arrête pas le travail en cours ?

Parfois, les processus ignorent le signal SIGINT envoyé par Ctrl - C dans Bash. Par exemple, man y vi . En supposant que vous n'ayez pas envie de chercher sur Google ou de lire le manuel pour savoir comment quitter le processus en cours, existe-t-il une séquence de touches qui permet de toujours travail (sans quitter le terminal) ?

181voto

andybee Points 497

Envoyez le SIGQUIT signal avec Ctrl + \ .

.. $ sleep 10
^\Quit

Ceci est équivalent à kill -3 pid . Les programmes exécutés en espace utilisateur n'ignorent pas sigquit.

Il existe également un ensemble de SysRq magique les raccourcis clavier. L'un des plus intéressants est celui-ci : Alt + SysRq + k . Il tue tous les processus sur la console virtuelle actuelle. Si l'un de vos ttys est complètement et totalement cassé, ceci peut être utilisé pour revenir en arrière . Sur le tty où tourne X.org, il peut être utilisé pour tuer X sans pitié.

La touche SysRq est, sur la plupart des claviers, la même que la touche d'impression. Sur mon ordinateur portable, elle peut être invoquée à l'aide de la touche Fn ; c'est-à-dire AltFnPrintk dans cet ordre.

Voici quelques-uns des raccourcis de base de la gestion des processus :

  • Ctrl + Z : mettre en pause un processus (plus bg pour reprendre en arrière-plan, fg à mettre au premier plan)
  • Ctrl + C : demander poliment au processus de s'arrêter maintenant
  • Ctrl + \ : tuer impitoyablement le processus qui est actuellement au premier plan
  • Alt + SysRq + s : Ecrire des données sur le disque (toujours faire cela avant de tuer quelque chose d'important)
  • Alt + SysRq + s , k : tuer impitoyablement tous les processus processus en cours sur une console virtuelle donnée
  • Alt + SysRq + s , b : redémarrer impitoyablement sans démonter,
  • Alt + SysRq + r , e , i , s , u , b : En toute sécurité r eboot e ven i f le s ysteme est u tterly b roken,

Note : Ctrl + Z contrairement à Ctrl + C y Ctrl + \ , fonctionne également pour man , vi , less et autres.

En cas de doute, la procédure suivante fonctionnera presque toujours :

~$ sleep 10
^Z
[5]+  Stopped              sleep 10
~$ ps
  PID TTY          TIME CMD
 4804 pts/0    00:00:00 bash
 6207 pts/0    00:00:00 sleep
 6208 pts/0    00:00:00 ps
~$ kill -9 6207
[5]+  Killed                  sleep 10
~$ 

^Z indique bien sûr que Ctrl + Z a été pressé.


Pour un examen plus approfondi des coquilles et des terminaux, voir également mes réponses sur :

18voto

Benjamin Points 259

Vous pouvez essayer Ctrl + \

10voto

MKL Points 161

Parfois, le CTRL+C est envoyé au mauvais programme ou canal d'entrée. Ceci est particulièrement courant avec les éditeurs tels que vi avec des commandes avec sortie pipée, des commandes bash complexes impliquant des boucles, etc.

Une solution simple et rapide consiste à suspendre le travail. CTRL+Z et ensuite le tuer par numéro de travail : kill %1 o kill -9 %1 etc.

9voto

kenorb Points 8840
  • Essayez l'un de ceux-ci :

    Ctrl + 4

    Ctrl + \


  • Ou :

    Ctrl + Z et ensuite exécuter :

    kill %1

%1 est le numéro du travail qui a été retourné lorsque vous avez appuyé sur la touche Control - Z . Ajouter -9 pour forcer le meurtre.


Lorsque vous êtes dans la console texte, vous pouvez également essayer : Ctrl - SysRq . Le noyau doit tuer le processus.

O SysRq - k tuer tous les processus sur la console virtuelle actuelle (peut tuer les programmes X et svgalib également).

Note : Lorsque les touches magiques SysRq sont utilisées pour tuer un programme graphique gelé gelé, le programme n'a aucune chance de revenir en mode texte. Cela peut rendre rendre tout illisible.

Voir : Touche magique SysRq et ses combinaisons de commandes.

4voto

Minter Points 51

Il est possible que vous ayez changé le raccourci de la copie de :

CTRL + SHIFT + C

A

CTRL + C

De cette façon, lorsque vous essayez de tuer un processus, la CTRL + C ne fonctionne pas.

Essayez de remplacer le raccourci de copie par CTRL + SHIFT + C .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X