我的 Ubuntu 问题之一是,当我的 PC 超载时,我的 Ubuntu 系统挂起,我尝试通过手动打开 CD-ROM 驱动器来强制中断并访问系统监视器以关闭某些任务来使其响应。
在 Windows 中,当这种情况发生时,我通常可以通过按Ctrl+ Alt+Del切换到任务管理器来摆脱它,这通常可以让我摆脱挂起的情况。
所以,我想知道:是有什么我可以做的Ubuntu逃脱悬挂情况(如按?Ctrl+ Alt+Del在Windows上)?
更新:
根据@Grumpy_Old_Man信息请求:
您使用的是什么处理器以及它的年龄。早期的 Ryzen CPU 存在一个已知问题,它在低负载下挂起。 bugzilla.kernel.org/show_bug.cgi?id=196683
我的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:
Run Code Online (Sandbox Code Playgroud)
还有我的 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
Run Code Online (Sandbox Code Playgroud)
Jör*_*tag 42
的侵入性最小的选择是使用Ctrl+ Alt+F3切换到控制台。
从控制台,您可以调查什么是使用您通常会使用一样的工具去top,htop,free,或洞穴探险通过/proc和/sysfs文件系统。一旦您的调查确定了罪魁祸首,您就可以采取任何措施来纠正这种情况。
例如,如果您有一个失控的进程,您可以尝试SIGTERM使用kill -s TERM <PID>. 如果这不起作用,您可以更加激进并SIGKILL使用kill -s KILL <PID>.
如果您设置了 SSH 服务器,您还可以通过 SSH 远程登录。但是请注意,如果您系统上的某些内容出现故障,SSH 可能无法正常工作,例如因为它无法获得足够的 CPU 时间、内存或网络套接字。
如果您设置了串行控制台,则可以通过串行终端登录。
如果您无法访问控制台,Linux 内核有一个名为“ Magic SysRqKey ”的功能。
Magic SysRqKey 是一种在几乎所有情况下都能引起内核注意的方法(它不起作用的唯一主要情况是内核恐慌,这是有道理的:内核崩溃了,它无法做任何进一步的工作) .
您可以SysRq通过按住Alt+SysRq并键入一系列全是单个字母的命令来访问 Magic Key的功能。
如果您没有单独的SysRq键,它通常是PrtScr键的备用模式,即使它没有标记。如果您也没有,则必须在键盘或笔记本电脑的手册中查找。
请注意,这些键基于其在美国英语 QWERTY 键盘上的扫描码。换句话说,Linux 不知道你的键上印的是什么字母,它只关心键在键盘上的位置。如果您有不同的键盘布局,则需要在与美国英语 QWERTY 布局相同的位置使用按键。
一种常见的命令序列是:
SIGTERM向除PID 1 ( init)之外的所有进程发送信号。这将很好地要求所有进程自行关闭。SIGKILL向除PID 1 ( init)之外的所有进程发送信号。这不会很好地要求所有在上一步之后仍在运行的进程立即自杀。sync所有当前挂载的文件系统。这会将页面缓存和块缓存刷新到磁盘。umount所有当前挂载的文件系统,或者更确切地说,重新挂载所有当前挂载的文件系统只读。reboot或者o:shutdown该序列可以写为 REISUB。一个常见的助记符是“即使系统完全损坏也要重新启动”。
小智 13
您可以设置一个快捷键打开系统监视器在Ubuntu与你喜欢的组合键(在这种情况下,Ctrl+ Alt+ Del)。
您可以在设置中为自定义组合键设置自定义快捷键(顺便说一下,这些步骤适用于 Ubuntu 18.04):
Open System Monitor)。gnome-system-monitor)。您可以通过按分配给快捷方式的组合键 ( Ctrl+ Alt+ Del)来试用该快捷方式。
如果你知道,没有响应的程序,去一个TTY壳CTRL+ ALT+ F4,然后使用下面的脚本来杀死该程序。复制代码,并保存为exterminate.sh中/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;
Run Code Online (Sandbox Code Playgroud)
然后使脚本可执行
sudo chmod +x /bin/exterminate.sh
Run Code Online (Sandbox Code Playgroud)
并以超级用户身份执行。请注意您传递给脚本的参数,因为您可能会在不经意间造成比您预想的更多的损害。
例如,如果故障程序是 transmission
sudo exterminate.sh transmission
Run Code Online (Sandbox Code Playgroud)
会做的伎俩。