Ubuntu死机卡死问题

本文介绍了Linux系统中遇到应用卡死、键盘鼠标无响应等问题的解决办法,如使用Ctrl+Alt+F1-6切换字符界面、发送进程信号以及利用pkill和killall命令终止进程。同时,详细列举了常见进程信号及其作用,并提供了ps、top和pstree等系统监控命令的使用方法,帮助用户更好地管理和诊断系统状态。
  1. 鼠标能移动,但点按无反应
    alt+tab
  2. 键盘可用,应用(含桌面)卡死
    使用下面罗列的命令解决(pkill大法好),或需结合ctr+alt+F1-6切换字符界面使用(当图形界面卡死时)。
  3. 卡在锁屏页面
    表现是鼠标卡慢(动一下鼠标过一会才看到屏幕上指针移动),键盘可用,但没法输密码。这种情况往往是由于内存不足,使用ctr+alt+F1-6切换字符界面再切换回来即可。之后加大虚拟内存即可。
  4. 键盘不可用。使用busier组合键安全重启
    buiser组合键:<Ctrl+Alt> + <Sysrq/PrtSc> + <REISUB>(busier倒写)
    按法:<Ctrl+Alt>按住不放,依次按下<Sysrq/PrtSc>REISUB,后面这7个键每次按下松开后秒稍等1秒再按下一个。
  • 常见的进程信号

    信号代号信号名称说 明
    1SIGHUP该信号让进程立即关闭.然后重新读取配置文件之后重启
    2SIGINT程序中止信号,用于中止前台进程。相当于输出 Ctrl+C 快捷键
    3SIGQUIT退出。
    8SIGFPE在发生致命的算术运算错误时发出。不仅包括浮点运算错误,还包括溢出及除数为 0 等其他所有的算术运算错误
    9SIGKILL用来立即结束程序的运行。本信号不能被阻塞、处理和忽略。般用于强制中止进程
    14SIGALRM时钟定时信号,计算的是实际的时间或时钟时间。alarm 函数使用该信号
    15SIGTERM正常结束进程的信号,kill 命令的默认信号。如果进程已经发生了问题,那么这 个信号是无法正常中止进程的,这时我们才会尝试 SIGKILL 信号,也就是信号 9
    18SIGCONT该信号可以让暂停的进程恢复执行。本信号不能被阻断
    19SIGSTOP该信号可以暂停前台进程,相当于输入 Ctrl+Z 快捷键。本信号不能被阻断
  • 常用命令
    ps [选项],查看系统中所有运行进程的详细信息。选项:

    选项含义
    a显示一个终端的所有进程,除会话引线外;
    u显示进程的归属用户及内存的使用情况;
    x显示没有控制终端的进程;
    -l长格式显示更加详细的信息;
    -e显示所有进程;
    ps命令常用固定选项:
    命令功能
    ps aux可以查看系统中所有的进程;
    ps -le可以查看系统中所有的进程,而且还能看到进程的父进程的 PID 和进程优先级;
    ps -l只能看到当前 Shell 产生的进程;
    pstree [选项] [PID或用户名],以树形结构显示程序和进程之间的关系。pstree命令常用选项及含义如下表:
    选项含义
    -a显示启动每个进程对应的完整指令,包括启动进程的路径、参数等。
    -c不使用精简法显示进程信息,即显示的进程中包含子进程和父进程。
    -n根据进程 PID 号来排序输出,默认是以程序名排序输出的。
    -p显示进程的 PID。
    -u显示进程对应的用户名称。
    top [选项],动态监听进程运行状态,默认每隔 3 秒刷新一次,选项:
    选项含义
    -d秒数:指定 top 命令每隔几秒更新。默认是 3 秒;
    -b使用批处理模式输出。一般和"-n"选项合用,用于把 top 命令重定向到文件中;
    -n次数:指定 top 命令执行的次数。一般和"-"选项合用;
    -p进程PID:仅查看指定 ID 的进程;
    -s使 top 命令在安全模式中运行,避免在交互模式中出现错误;
    -u用户名:只监听某个用户的进程;
    kill [信号] PID,通过PID杀死进程,配合上面进程监听命令使用。
    pkill [信号] 进程名,通过进程名杀死一类进程(不需要完整进程名)
    pkill -9 terminal #杀死所有终端
    

    killall [选项] [信号] 进程名,通过进程名杀死一类进程(需要完整进程名)
    [选项] :
      -i:交互式,询问是否要杀死某个进程;
      -I:(大写i)忽略进程名的大小写;

    killall -9 gnome-terminal-server #杀死所有终端
    

参考:
Linux系统管理(进程管理、工作管理和系统定时任务)
Ubuntu死机解决方法汇总

<think>嗯,用户需要解决Ubuntu 20.04系统卡死问题。这个问题Linux桌面环境中确实很常见,尤其在新硬件上。用户可能是个刚接触Ubuntu的开发者或爱好者,被卡死问题困扰得无法正常工作,情绪上应该比较焦虑。 从引用内容看,用户已经尝试过一些方法但效果不佳。引用[1]提到关闭CPU超线程解决了问题,引用[4]提供了内存清理脚本,引用[5]则是关于交换文件的配置。这些线索很有价值,说明卡死可能涉及硬件兼容性、内存管理等多方面因素。 需要系统性地排查这个问题。首先考虑硬件兼容性,特别是华硕这类消费级主板可能存在的ACPI问题;其次是内存和交换空间配置,这对Ubuntu的稳定性至关重要;输入法服务ibus在某些情况下也会导致卡顿(引用[3]);最后图形驱动永远是Linux桌面的痛点。 用户没有提供具体卡死场景的描述,比如是开机后立即卡死还是运行特定软件时发生。不过引用[2]提到“没打开vscode也会卡死”,说明可能是系统级问题。在回答中需要覆盖全面排查方案,从简单到复杂排列: 第一步硬件检查最省时,关闭超线程(如引用[1])和更新BIOS可能立竿见影;第二步内存管理适合频繁卡死的场景,引用[4][5]的方案可以整合;第三步输入法服务重启(引用[3])操作简单;最后的驱动和内核方案需要一定技术基础。 需要特别注意引用[5]的交换文件创建步骤有风险,必须提醒用户备份数据。另外所有命令都要给出详细说明,毕竟用户可能是新手。 最后生成的问题要覆盖延伸场景:显卡驱动相关(NVIDIA用户必遇)、虚拟机环境(常见于开发机)、服务器场景(无GUI情况)等。这样无论用户后续遇到什么变体都能找到线索。</think>好的,针对Ubuntu 20.04系统卡死问题,结合提供的参考信息和常见解决方案,以下是系统性的排查和恢复步骤: ## 一、 初步检查与硬件兼容性排查 (优先尝试) 1. **检查CPU超线程设置 (参考引用[1]):** * 重启电脑,进入BIOS/UEFI设置界面(通常开机时按 `Del`, `F2`, `F10` 或 `Esc` 键)。 * 寻找与CPU相关的设置项(如 `Advanced CPU Settings`, `Processor` 等)。 * 查找 `Hyper-Threading Technology`, `SMT (Simultaneous Multi-Threading)` 或 `Logical Processor` 选项。 * **尝试将其从 `Enabled` 改为 `Disabled`。** * 保存设置并退出BIOS/UEFI。 * 启动Ubuntu,观察卡死现象是否缓解或消失。这是引用[1]中用户成功解决的关键步骤。 2. **更新BIOS/UEFI:** * 访问电脑制造商(如华硕)或主板制造商的官方网站。 * 根据你的电脑型号或主板型号,查找最新的BIOS/UEFI固件更新。 * **严格按照官方说明进行BIOS更新。** 这是一个有风险的操作,务必确保电源稳定(最好连接笔记本电脑电源或台式机使用UPS),仔细阅读更新说明。新版BIOS通常包含对硬件兼容性和稳定性的改进。 3. **检查内存健康状况:** * 使用Ubuntu安装介质(USB/DVD)启动电脑。 * 在GRUB菜单(启动时按 `Shift` 或 `Esc` 可唤出)选择 `Memory test (memtest86+)`。 * 让内存测试工具运行至少1-2个完整循环(通常需要几十分钟到几小时)。 * 如果报告大量错误,**表明内存条(RAM)可能存在硬件故障**,需要更换合格的品牌内存(如引用[1]中用户所做)。即使之前换过,也需用此工具验证新内存的稳定性。 ## 二、 内存与交换空间管理 (针对内存不足或交换问题) 4. **监控内存使用 (`free -h` 或 `htop`):** * 在系统运行期间,打开终端,运行 `free -h` 查看内存(`Mem`)和交换空间(`Swap`)的使用情况。 * 安装 `htop` (`sudo apt install htop`) 获得更直观的动态监控:`htop`。观察 `Mem` 和 `Swap` 条是否经常接近全满。 * 如果物理内存经常耗尽且交换空间使用率极高,卡死很可能由内存瓶颈引起。 5. **增加交换空间大小 (参考引用[5]):** * 如果交换空间太小(通常建议为物理内存的1-2倍,尤其是内存小于8GB时),需要增加: ```bash # 1. 禁用现有交换空间(如果存在) sudo swapoff -a # 2. 创建交换文件 (例如 4GB, 根据你的物理内存大小调整count值,4GB=4096) sudo dd if=/dev/zero of=/var/swapfile bs=1M count=4096 # 3. 设置安全权限 sudo chmod 600 /var/swapfile # 4. 格式化为交换空间 sudo mkswap /var/swapfile # 5. 启用新的交换文件 sudo swapon /var/swapfile # 6. 验证 (free -h 应显示Swap大小增加) free -h # 7. 永久生效:编辑 /etc/fstab echo '/var/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab ``` 6. **调整内存回收策略 (参考引用[4]思路,但需谨慎):** * 引用[4]中的脚本通过定时清理缓存(`drop_caches`)来释放内存。**这通常不是根本解决方案,且可能影响性能(因为清理的是有用的缓存)。** 更推荐: * **增加物理内存:** 最有效的方法。 * **优化程序:** 找出并关闭内存泄漏或占用过高的程序。 * **调整 `vm.swappiness`:** 这个值(0-100)控制内核将内存页交换到磁盘的积极程度。默认值60偏高。 ```bash # 查看当前值 cat /proc/sys/vm/swappiness # 临时设置为较低值(如10或20),尝试效果 sudo sysctl vm.swappiness=20 # 永久生效:编辑 /etc/sysctl.conf,添加行 vm.swappiness=20 # 然后应用 sudo sysctl -p ``` * **如果坚持使用脚本方法,请确保理解其作用,并监控 `/var/log/mem.log` 以评估效果。脚本本身语法需修正(如 `>>` 应为 `>>`)。** ## 三、 输入法与显示服务排查 (针对特定卡顿) 7. **重启输入法服务 (参考引用[3]):** * Ubuntu 20.04 默认使用 `ibus` 作为输入法框架。有时其服务会异常导致输入卡顿甚至界面冻结。 * 创建一个简单的重启脚本(如 `Restart_IBus.desktop`)并放到快捷方式目录,方便快速重启: ```bash #!/bin/bash ibus-daemon -drx ``` * 或者直接在终端运行: ```bash ibus-daemon -drx ``` * 观察输入卡顿或相关卡死是否缓解。 8. **检查显示驱动与桌面环境:** * **专有显卡驱动 (NVIDIA/AMD):** * 打开 “Software & Updates” -> “Additional Drivers”。 * 尝试切换不同的专有驱动版本(如从 `nvidia-driver-535` 换到 `nvidia-driver-525` 或 `nvidia-driver-470`),或者尝试使用开源的 `Nouveau` 驱动(性能可能较差)。选择后应用更改并重启。 * NVIDIA用户可尝试在GRUB启动参数添加 `nouveau.modeset=0` 或 `nvidia-drm.modeset=1`(具体取决于驱动版本)来排除问题。 * **集成显卡/Intel/AMD开源驱动:** * 通常问题较少,但也可以尝试更新内核或Mesa驱动。 * **临时切换桌面环境:** * 安装轻量级桌面环境如 `XFCE` (`sudo apt install xubuntu-desktop`) 或 `LXQt` (`sudo apt install lubuntu-desktop`)。 * 在登录界面(LightDM/GDM),选择齿轮图标切换为 `Ubuntu on Xorg` (如果使用Wayland) 或 `XFCE/LXQt` 会话登录。 * 测试在新桌面环境下是否还会卡死,以判断是否是GNOME Shell或默认显示服务器(Wayland/Xorg)的问题。 ## 四、 系统日志分析与内核升级 9. **查看系统日志 (`journalctl`):** * 卡死发生后,如果还能进入系统或通过TTY(`Ctrl+Alt+F3`)登录,立即查看日志: ```bash journalctl -b -0 -p 3..4 # 查看本次启动的严重(3)和错误(4)级别日志 journalctl -b -0 -k # 查看本次启动的内核日志 ``` * 重点查找卡死时间点附近的错误或警告信息(如硬件错误 `hardware error`, `GPU HANG`, `oom-killer`, 驱动错误等)。 10. **升级内核:** * 更新的内核通常包含更多的硬件支持、驱动更新和错误修复。Ubuntu 20.04默认内核较旧(如5.4),可尝试安装HWE内核或更新的主线内核: ```bash # 安装最新的HWE内核 (适用于20.04.3及以后) sudo apt install --install-recommends linux-generic-hwe-20.04 # 或者安装Ubuntu Mainline Kernel PPA提供的更新内核 (需谨慎,可能有风险) sudo add-apt-repository ppa:cappelikan/ppa sudo apt update sudo apt install mainline ``` * 安装后重启,在GRUB菜单的“Advanced options for Ubuntu”中选择新内核启动。 ## 总结与建议 * **优先尝试硬件级排查:** **关闭CPU超线程 (步骤1)** 和 **更新BIOS (步骤2)** 是最可能解决根本兼容性问题的步骤,务必优先尝试。**内存测试 (步骤3)** 也很关键。 * **关注内存瓶颈:** 监控内存使用 (步骤4),必要时 **增加交换空间 (步骤5)** 或物理内存。谨慎使用缓存清理脚本 (步骤6)。 * **排除特定服务问题:** 输入法 (步骤7) 和显卡驱动 (步骤8) 是常见诱因。 * **利用日志诊断:** 卡死后立即查看日志 (步骤9) 能提供关键线索。 * **升级内核:** 较新内核 (步骤10) 能解决很多硬件兼容性和稳定性问题。 * **循序渐进:** 每次尝试一个解决方案,重启后观察一段时间(至少半小时到几小时),确认是否有效,再进行下一个尝试。记录下所做的更改,以便回溯。 [^1]: 解决Ubuntu20.04频繁卡死之我的经历,提到关闭CPU超线程成功解决。 [^2]: ubuntu20.04卡死(其他版本也可以试试18.04等),描述了卡死现象。 [^3]: Ubuntu20.04 解决键盘卡死 输入延迟很大的问题,提供了重启ibus输入法服务的脚本方法。 [^4]: ubuntu 20.04死机卡死情况解决办法,给出了通过定时清理内存缓存来缓解内存压力的脚本(需注意语法修正和潜在性能影响)。 [^5]: ubuntu20.04 编译卡死问题,提供了创建和启用交换文件的具体命令步骤。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值