Que faire lorsque Ctrl-C ne tue pas le travail en cours?

90

Parfois, les processus ignorent le signal SIGINT envoyé par Ctrl - C dans Bash. Par exemple, man et vi . En supposant que vous ne vouliez pas google ou lire le manuel sur la façon de quitter le processus en cours, y a-t-il une séquence de touches qui toujours (sans quitter le terminal) fonctionnera?

    
posée Olivier Lalonde 20.11.2010 - 12:47
la source

7 réponses

122

Envoyez le signal SIGQUIT avec Ctrl + \ .

.. $ sleep 10
^\Quit

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

Il existe également un ensemble de raccourcis clavier Magic SysRq . Une des plus intéressantes est la suivante: Alt + SysRq + k . Il tue tous les processus de la console virtuelle actuelle. Si l'un de vos ttys est complètement et complètement cassé, cela peut être utilisé pour revenir en arrière . Sur le tty exécutant X.org, il peut être utilisé pour tuer X sans pitié.

La clé SysRq est, sur la plupart des claviers, identique à la touche d’impression. Sur mon carnet, il peut être appelé à l'aide de la touche Fn; C'est à dire. Alt → Fn → Imprimer → k dans cet ordre.

Voici quelques raccourcis de gestion de processus de base:

  • Ctrl + Z : pause a processus (plus bg pour reprendre en arrière-plan, fg pour passer au premier plan)
  • Ctrl + C : demandez poliment au processus fermez maintenant
  • Ctrl + \ : éliminez sans pitié le processus actuellement au premier plan
  • Alt + SysRq + s : écrivez les données sur le disque (faites-le toujours avant de tuer quelque chose d'important)
  • Alt + SysRq + s , k : éliminez sans pitié tous les courants processus sur une console virtuelle donnée
  • Alt + SysRq + s , b : redémarrer sans pitié sans démonter,
  • Alt + SysRq + r , e , i , s , u , b : eboot en toute sécurité r e ven i f le système s est u tterly b roken,

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

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 que Ctrl + Z a été pressé.

Pour plus de détails sur les coques et les terminaux, consultez également mes réponses sur:

réponse donnée Stefano Palazzo 20.11.2010 - 13:07
la source
11

Vous pouvez essayer Ctrl + \

    
réponse donnée Benjamin 20.11.2010 - 13:06
la source
8

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

Une solution simple et rapide consiste à suspendre le travail CTRL + Z puis à le tuer par numéro de tâche: kill %1 ou kill -9 %1 , etc.

    
réponse donnée tylerl 20.11.2010 - 21:18
la source
3

Pour quitter man , utilisez q Pour quitter vi , utilisez :q

    
réponse donnée antivirtel 20.11.2010 - 23:46
la source
3
  • Essayez l'un de ces:

    Ctrl + 4

    Ctrl + \

  • Ou:

    Ctrl + Z puis exécutez:

    kill %1

%1 est le nombre de tâches qui ont été renvoyées lorsque vous avez appuyé sur Control - Z . Ajoutez -9 pour forcer le kill.

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

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

  

Note: Quand des clés magiques SysRq sont utilisées pour tuer un graphique figé   programme, le programme n'a aucune chance de restaurer le mode texte. Cela peut faire   tout illisible.

Voir: La clé Magic SysRq et ses combinaisons de commandes.

    
réponse donnée kenorb 01.10.2012 - 13:47
la source
-1

Essayez Ctrl + Alt + Retour arrière

Si vous utilisez Ubuntu 10.04, vous voulez activer cette clé pour fonctionner.

Pour activer Control - Alt - Retour arrière

Goto System - & gt; Préférences - & gt; Keyboard

Sélectionnez l’onglet Mises en page , puis cliquez sur Options de mise en page .

Sélectionnez Séquence de touches pour tuer le serveur X et activez Contrôle + Alt + Retour arrière .

Note:

Appuyez sur Ctrl - Alt - Retour arrière redémarrera votre serveur X.

    
réponse donnée karthick87 20.11.2010 - 12:56
la source
-2

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

CTRL + SHIFT + C

Pour

CTRL + C

Ainsi, lorsque vous essayez de tuer un processus, le CTRL + C ne fonctionne pas.

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

    
réponse donnée Minter 20.11.2016 - 20:36
la source

Lire d'autres questions sur les étiquettes