web-dev-qa-db-fra.com

Comment échapper à un OS Ubuntu suspendu?

L'un de mes problèmes avec Ubuntu est que, lorsque mon PC est surchargé, mon système Ubuntu se bloque et j'essaie de le faire répondre en ouvrant manuellement le lecteur de CD-ROM pour forcer une interruption et accéder au moniteur système pour fermer certaines tâches.

Sous Windows, lorsque cette situation se produit, je peux généralement y échapper en appuyant sur Ctrl+Alt+Del pour basculer dans le Gestionnaire des tâches, ce qui me sort généralement d'une situation de suspension.

Donc, je voudrais savoir: est-ce que je peux faire avec Ubuntu pour échapper à une situation suspendue (comme Ctrl+Alt+Del sous Windows)?

Mise à jour:

Selon @ Grumpy_Old_Man Demande d'informations:

Quel processeur utilisez-vous et quel âge a-t-il? Il existe un problème connu avec les premiers processeurs Ryzen, qui se bloquent sous faible charge. bugzilla.kernel.org/show_bug.cgi?id=19668

Mes informations CPU:

$ cat /proc/cpuinfo
processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 142
model name  : Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz
stepping    : 9
microcode   : 0xca
cpu MHz     : 3278.317
cache size  : 4096 KB
physical id : 0
siblings    : 4
core id     : 0
cpu cores   : 2
apicid      : 0
initial apicid  : 0
fpu     : yes
fpu_exception   : yes
cpuid level : 22
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art Arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear flush_l1d
bugs        : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit
bogomips    : 5808.00
clflush size    : 64
cache_alignment : 64
address sizes   : 39 bits physical, 48 bits virtual
power management:

processor   : 1
vendor_id   : GenuineIntel
cpu family  : 6
model       : 142
model name  : Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz
stepping    : 9
microcode   : 0xca
cpu MHz     : 3274.188
cache size  : 4096 KB
physical id : 0
siblings    : 4
core id     : 1
cpu cores   : 2
apicid      : 2
initial apicid  : 2
fpu     : yes
fpu_exception   : yes
cpuid level : 22
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art Arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single pti tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp
bugs        : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit
bogomips    : 5808.00
clflush size    : 64
cache_alignment : 64
address sizes   : 39 bits physical, 48 bits virtual
power management:

processor   : 2
vendor_id   : GenuineIntel
cpu family  : 6
model       : 142
model name  : Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz
stepping    : 9
microcode   : 0xca
cpu MHz     : 3271.793
cache size  : 4096 KB
physical id : 0
siblings    : 4
core id     : 0
cpu cores   : 2
apicid      : 1
initial apicid  : 1
fpu     : yes
fpu_exception   : yes
cpuid level : 22
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art Arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear flush_l1d
bugs        : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit
bogomips    : 5808.00
clflush size    : 64
cache_alignment : 64
address sizes   : 39 bits physical, 48 bits virtual
power management:

processor   : 3
vendor_id   : GenuineIntel
cpu family  : 6
model       : 142
model name  : Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz
stepping    : 9
microcode   : 0xca
cpu MHz     : 3285.540
cache size  : 4096 KB
physical id : 0
siblings    : 4
core id     : 1
cpu cores   : 2
apicid      : 3
initial apicid  : 3
fpu     : yes
fpu_exception   : yes
cpuid level : 22
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art Arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear flush_l1d
bugs        : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit
bogomips    : 5808.00
clflush size    : 64
cache_alignment : 64
address sizes   : 39 bits physical, 48 bits virtual
power management:

Et mes infos Ubuntu:

 hostnamectl
   Static hostname: so-notebook
         Icon name: computer-laptop
           Chassis: laptop
        Machine ID: 34a2eb65afa64d60a60ed02d972e884d
           Boot ID: 9ee34ad4bff84b908e8719ab83029836
  Operating System: Ubuntu 18.04.3 LTS
            Kernel: Linux 5.0.0-37-generic
      Architecture: x86-64

24
modern

Vous pouvez définir un raccourci pour ouvrir le moniteur système dans Ubuntu avec la combinaison de touches que vous aimez (dans ce cas, Ctrl+Alt+Del).

Vous pouvez définir des raccourcis personnalisés pour une combinaison de touches personnalisée dans les paramètres (à propos, ces étapes sont pour Ubuntu 18.04):

  1. Accédez aux paramètres.
  2. Recherchez raccourcis (commencez simplement à taper et il le recherchera).
  3. Maintenant, appuyez sur l'option Clavier et faites défiler jusqu'à la fin.
  4. Cliquez sur le signe + et une boîte de dialogue apparaîtra.
  5. Tapez le nom du raccourci qui peut être tout ce que vous voulez (dans ce cas, vous pouvez écrire Open System Monitor).
  6. Tapez le nom de la commande (dans ce cas, gnome-system-monitor).
  7. Cliquez sur l'option Définir le raccourci `et appuyez sur la combinaison de touches que vous utiliserez pour ouvrir le Moniteur système (dans ce cas, appuyez sur CtrlAlt et Del en même temps après avoir cliqué sur l'option).
  8. Enfin et surtout, cliquez sur Ajouter et un raccourci personnalisé sera créé.

Vous pouvez essayer le raccourci en appuyant sur la combinaison de touches (Ctrl+Alt+Del) que vous avez attribué au raccourci.

13
Sumagna Das

L'option la moins invasive est d'utiliser Ctrl+Alt+F3 pour passer à une console.

Depuis la console, vous pouvez rechercher ce qui se passe en utilisant les outils que vous utiliseriez normalement, comme top, htop, free, ou la spéléologie via le /proc et /sysfs systèmes de fichiers. Une fois que votre enquête a déterminé le coupable, vous pouvez envoyer tout ce dont vous avez besoin pour corriger la situation.

Par exemple. si vous avez un processus d'emballement, vous pouvez essayer de lui envoyer le signal SIGTERM en utilisant kill -s TERM <PID>. Si cela ne fonctionne pas, vous pouvez être plus agressif et lui envoyer le signal SIGKILL en utilisant kill -s KILL <PID>.

Si vous avez un serveur SSH configuré, vous pouvez également vous connecter à distance via SSH. Notez cependant que si quelque chose sur votre système se détraque, SSH peut ne pas fonctionner correctement, par exemple car il ne peut pas obtenir suffisamment de temps CPU, de mémoire ou de sockets réseau.

Si une console série est configurée, vous pouvez vous connecter via un terminal série.

Si vous ne pouvez pas accéder à une console, le noyau Linux possède une fonctionnalité appelée " Magic SysRq Clé ".

La magie SysRq La clé est un moyen d'attirer l'attention du noyau dans presque toutes les circonstances (la seule situation majeure où il ne fonctionne pas est dans une panique du noyau, ce qui est logique: le noyau est tombé en panne, il ne peut plus faire de travail).

Vous pouvez accéder aux fonctionnalités du Magic SysRq Clé en maintenant enfoncée Alt+SysRq et en tapant une série de commandes qui sont toutes des lettres simples.

Si vous n'en avez pas SysRq clé, il s'agit généralement d'un autre mode PrtScr même si elle n'est pas étiquetée. Si vous ne l'avez pas non plus, vous devrez le rechercher dans le manuel de votre clavier ou de votre ordinateur portable.

Notez que les touches sont basées sur leurs scancodes sur un clavier anglais américain QWERTY clavier. En d'autres termes, Linux ne fonctionne pas) t savoir quelle lettre est imprimée sur votre touche, elle ne se soucie que de l'emplacement de la touche sur le clavier. Si vous avez une disposition de clavier différente, vous devra utiliser les touches à la même position que si vous aviez une disposition en anglais américain QWERTY layout.

Une séquence de commandes courante est:

  • r: Basculez le clavier en mode XLATE à partir du mode brut (par exemple, si vous êtes actuellement dans une interface graphique, le clavier est très probablement passé en mode brut et sera inutile dans la console).
  • e: Envoie le signal SIGTERM à tous les processus à l'exception du PID 1 (init). Cela demandera gentiment à tous les processus de s'arrêter.
  • … Attendez un peu pour permettre à tous les processus de s'arrêter de manière ordonnée.
  • i: Envoie le signal SIGKILL à tous les processus à l'exception du PID 1 (init). Cela ne demandera pas à tous les processus en cours d'exécution après l'étape précédente de se suicider immédiatement.
  • … attends un peu
  • s: sync tous les systèmes de fichiers actuellement montés. Cela videra le cache de pages et bloquera le cache sur le disque.
  • … Attendez un peu pour permettre au noyau Linux de vider tous les caches sur les périphériques de stockage et les périphériques de stockage de vider tous leurs caches internes sur le support; si vous avez toujours des voyants d'activité de disque à l'ancienne, attendez que l'activité s'éteigne
  • u: umount tous les systèmes de fichiers actuellement montés, ou plutôt remontez tous les systèmes de fichiers montés en lecture seule.
  • … attends un peu
  • b: reboot ou alternativement o: shutdown

La séquence pourrait être écrite en tant que REISUB. Un mnémonique commun à retenir est "Redémarrer même si le système est complètement cassé".

41
Jörg W Mittag

Maintenez Alt et SysRq (qui est la touche Impr écran) tout en tapant lentement REISUB vous permettra de redémarrer en toute sécurité. REISUO fera un arrêt plutôt qu'un redémarrage.

9
SteveInBavaria

Si vous connaissez le programme qui ne répond pas, accédez à un shell TTY CTRL+ALT+F4 puis utilisez le script suivant pour tuer ce programme. Copiez le code et enregistrez-le sous exterminate.sh dans /bin

#!/bin/bash

userName=$(whoami);
programName="$1";
main(){
    pidVar=$(top -n 1 -d 1 -b | grep -i "$programName" | cut -c -6 );
    kill $pidVar >& /dev/null;
    echo "killed all \"$programName\" instances.";
}

if [ "$userName" == "root" ] ; then main ; else echo "run as root" ; fi;

puis rendez le script exécutable par

Sudo chmod +x /bin/exterminate.sh

et l'exécuter en tant que superutilisateur. Faites attention à l'argument que vous passez au script car vous pourriez par inadvertance causer plus de dégâts que vous ne l'auriez prévu.

par exemple. si par exemple le programme défectueux est transmission

Sudo exterminate.sh transmission

ferait l'affaire.

5
endrias

lorsque mon PC est surchargé, mon système Ubuntu se bloque

Pour moi, cela signifie généralement manquer de RAM et commencer à échanger massivement.

Ce qui peut aider dans cette situation, Alt+SysRq+F , qui commande au système de tuer la tâche en prenant le plus de mémoire.

Vous devrez activer le SysRq clé d'abord, comme expliqué dans cette question . Certains ordinateurs portables nécessitent également de maintenir Fn simultanément.

5
jpa

Appuyez sur ctrl + alt + f3 pour entrer dans TTY. De là, ce sera comme une expérience terminale complète. Tapez reboot/poweroff et appuyez sur entrée et cela devrait résoudre votre problème. Une autre solution serait d'appuyer sur ctrl + alt + f1 pour verrouiller votre utilisateur et saisir à nouveau le mot de passe pour entrer dans Ubuntu.

4
Aaditya Muley

Vous pourrez peut-être utiliser Ctrl+Alt+Backspace pour tuer le serveur X.

1
Solomon Ucko