前言:Linux系统卡死了的情况有很多,最常见的是系统负载过高导致的。还可以运行内存耗用极大的程序(如虚拟机),也会迅速提升系统负载。注意:不能再试图依赖任何图形界面的东西,如 Gnome的系统监视器,只会继续加重这种卡死的局面。
有时系统负载过大,程序不能及时响应,很容易死机。个人用户强行关机再重启就OK。但是对于需要全天工作提供服务的服务器来说,强行关机不仅会导致服务器停止工作,同时造成未同步的数据丢失。
总结下尝试的解决方法
1. 进入TTY终端
a. Ctrl+Alt+Fn(F1-F6)进入TTY1终端字符界面, 输入用户名和密码以登录

b. free命令可查看内存使用情况

[root@rhel7 ~]# free -m
total used free shared buff/cache available
Mem: 3778 171 3411 8 194 3399
Swap: 3967 0 3967

c. 开始清理内存(需要root权限)

sync
echo 1 > /proc/sys/vm/drop_caches
echo 2 > /proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches

sync的作用是将所有正在内存中的缓冲区写到磁盘中,其中包括已经修改的文件inode、已延迟的块I/O以及读写映射文件,从而确保文件系统的完整性。
注释:1:释放页缓存 2:释放dentries和inodes 3:释放所有缓存

d.top查看CPU使用情况
进入后用top命令查看进程表,等待进程信息表刷新一两次,就可以确定占用资源比较大的进程了,然后输入q退出,回到终端内,把占用资源比较大的进程kill掉,这样可以解决相当一部分问题。

[root@rhel7 ~]# top
top - 02:15:55 up 8:54, 2 users, load average: 0.02, 0.02, 0.05
Tasks: 433 total, 1 running, 432 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 3868768 total, 3492268 free, 176756 used, 199744 buff/cache
KiB Swap: 4063228 total, 4063228 free, 0 used. 3480144 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
137 root 20 0 0 0 0 S 20.0 0.0 1:09.00 rcu_sched
141 root 20 0 0 0 0 S 16.0 0.0 0:03.53 rcuos/3
4550 root 20 0 130284 1984 1200 R 12.0 0.1 0:00.12 top
1 root 20 0 57580 7556 2656 S 0.0 0.2 0:02.89 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.22 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.58 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root rt 0 0 0 0 S 0.0 0.0 0:05.33 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/0
10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/1
11 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/2
12 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/3
13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/4

 

2. 使用reisub
a. REISUB简介
Sys Rq 是一种叫做系统请求,按住 Alt-Print 的时候就相当于按住了 Sys Rq 键,这个时候输入的一切都会直接由 Linux内核来处理,它可以进行许多低级操作。这个方法可以在各种情况下安全地重启计算机。
SysRq是Linux提供的一个“Magic System Request Key”,它可以在系统出现故障的时候协助恢复和调试系统。只要你的虚拟终端或串口还可以接收键盘输入(系统还能响应键盘的按键中断),SysRq就可用,你可以借助它来查看当时的内存、进程状态等信息,而不是直接强行拔掉电源重启系统。
reisub        中的每一个字母都是一个独立操作,他们分别表示:

R - 把键盘设置为 ASCII 模式
SysRq: Keyboard mode set to XLATE
有关键盘工作模式,请参考资料中的 kbd_mode 手册。 E - 向除 init 以外所有进程发送 SIGTERM 信号
SysRq: Terminate All Tasks
因为 syslogd 本身也被结束,所以 SysRq 也许不会被记录下来。但是查看 /var/log/messages 会看到类似下面的消息:
exiting on signal 15(SIGTERM) I - 向除 init 以外所有进程发送 SIGKILL 信号
SysRq: Kill All Tasks
与 E 类似,因为 syslogd 本身也被结束,除非 netconsole 或串口记录已打开,否则连上面的信息都无法捕捉。同时,因为 SIGKILL 是不可捕获的信号,/var/log/messages 里面也不会留下任何线索。 S - 磁盘缓冲区同步
SysRq : Emergency Sync
Emergency Sync complete
该操作会把磁盘缓冲区的数据回写,以防止数据丢失,通常会有一定延时。在能看到输出的情况下,请等到 ” Emergency Sync complete ” 过后再继续后续操作。否则,等十秒钟左右,再进行后续 SysRq 操作。 U - 重新挂载为只读模式
SysRq : Emergency Remount R/O
Emergency Remount complete
该操作会把磁盘重挂载为只读模式,以防止数据的损坏。与 S 类似,该操作通常也有一定延时。请等到 ” Emergency Remount complete ” 出现过后再进行后续操作,或者等候十秒钟再进行后续 SysRq 操作。 B - 立即重启系统
SysRq: Resetting
该操作会立即重启系统

b.要使用Magic Sysrq Key,有三个基本条件
- 键盘上有Sysrq键
- 系统使用的内核,在编译时打开了CONFIG_MAGIC_KEY选项

[root@rhel7 ~]# grep -F CONFIG_MAGIC_SYSRQ /boot/config-`uname -r`
CONFIG_MAGIC_SYSRQ=y #表示已开启

-系统配置Magic Sysrq Key为可用,临时启用,设置/proc/sys/kernel/sysrq

[root@rhel7 ~]# sudo echo "1" > /proc/sys/kernel/sysrq

查看 /etc/sysctl.conf,确认 kernel.sysrq = 1
如果先前为0,更改配置后使用以下方式激活:sysctl -p

c.实际操作技巧
同时按下<Alt>+<SysRq>行不通!只会蹦出来一个屏幕截图窗口。所以,真正的做法应该是:
注:键盘上可以找到一个叫做“Sys Rq”的键,在台机的键盘上通常与 Prt Sc 共键,在笔记本可能在其他位置,如 Delete。
(1)伸出你的左手,同时按住<Alt>键,别松开
(2)右手先按一下<SysRq>,左手别松开
(3)-E-I-S-U-B 这个序列的推荐使用方式是:R – 1 秒 – E – 30 秒 – I – 10 秒 – S – 5 秒 – U – 5 秒 – B

Linux系统卡死后紧急处理的更多相关文章

  1. 关于vmware下复制linux系统虚拟机后eth0变成eth1问题解决

    在vmware虚拟机中,当我们克隆或者复制linux系统虚拟机后,再启动系统时会发现系统下不再有eth0,而变成了eth1 当我们使用/etc/init.d/network restart重启网络时, ...

  2. linux系统重启后提示An error occurred during the file system check.

    一.问题描述 生产环境中一台浪潮NF8480M3外观红灯报警,鉴于无法登陆带外管理口,只能对服务器进行断电重启操作 二.问题现象 重启后进入开机过程并报错,正常来说进入此界面后直接输入root密码即可 ...

  3. 索尼笔记本Linux系统唤醒后,键盘无法使用

    1.编辑grub文件 sudo gedit /etc/default/grub 2.修改成以下参数 GRUB_CMDLINE_LINUX_DEFAULT="quiet splash i804 ...

  4. Linux 桌面玩家指南:01. 玩转 Linux 系统的方法论

    特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...

  5. linux系统故障分析与排查

    在处理Linux系统出现的各种故障时,故障的症状是最先发现的,而导致这以故障的原因才是最终排除故障的关键.熟悉Linux系统的日志管理,了解常见故障的分析与解决办法,将有助于管理员快速定位故障点.“对 ...

  6. Linux系统的方法论

    Linux系统的方法论 https://www.cnblogs.com/youxia/p/LinuxDesktop001.html 阅读目录 特别说明 什么情况下适合玩Linux桌面 Linux桌面系 ...

  7. 在vmware fusion上安装linux系统然后再安装vmware tools出现问题

    /usr/lib/vmware-tools] In which directory do you want to install the documentation files? [/usr/shar ...

  8. Linux虚拟机克隆后网卡UUID问题

    虚拟机中的Linux系统克隆后,网卡配置eth0中的UUID可被克隆的系统是一样的,这样UUID就失去了唯一性. 我参考了该篇博客: 有时我们不小心将/etc/sysconfig/network-sc ...

  9. VMware 克隆 Linux 系统后找不到 eth0 网卡问题(转)

    [问题描述] 使用 VMware 虚拟机的克隆功能,快速复制已安装好的 Linux 系统. 克隆完成之后,发现没有 eth0 网卡. [解决方法] 1. 编辑 /etc/udev/rules.d/70 ...

随机推荐

  1. ZOJ 3408 Gao

    ZOJ题目页面传送门 给定一个有向图\(G=(V,E),n=|V|,m=|E|\)(可能有重边和自环,节点从\(0\)开始编号),以及\(q\)组询问,对于每组询问你需要回答有多少条从节点\(0\)开 ...

  2. Nginx在linux下安装及简单命令

    安装环境:Centos7 创建目录及切换至目录 # mkdir /usr/local/nginx # cd /usr/local/nginx/ 下载nginx包,访问http://nginx.org下 ...

  3. 网络安全攻击与防护--HTML学习

    第一节. HTML基本语法(文末有对该文视频讲解) HTML的官方介绍什么的我就不说了,打字也挺累的,只简单介绍一下吧,其他的懂不懂都没关系. HTML全称为Hypertext Markup Lang ...

  4. python变量前的单下划线(私有变量)和双下划线()

    1.单下划线 变量前的单下划线表示表面上私有 ,但是其实这样的实例变量外部是可以访问的,但是,按照约定俗成的规定,当你看到这样的变量时,意思就是,“虽然我可以被访问,但是,请把我视为私有变量,不要随意 ...

  5. 一份程序猿单词列表(updating)

    以下单词是个人平时阅读英文文档时遇到的一些“生”单词,该文档将持续更新,可以持续关注https://github.com/hylinux1024/word-list-for-programmer hi ...

  6. 一.安全NA之syslog SNMP SSH NTP

    一.常用命令 配置模式下: no logging console #关闭屏幕实时显示日志,不影响到日志buffer里(show logging) logging console #打开屏幕实时日志显示 ...

  7. 写论文的第三天 自建zookeeper集群

    日志___2019.1.25 基于hadoop集群搭建zookeeper集群 Filezilla上传zookeeper压缩包到主节点 安装zookeeper到/usr/local目录 命令:tar – ...

  8. java高并发系列 - 第32天:高并发中计数器的实现方式有哪些?

    这是java高并发系列第32篇文章. java环境:jdk1.8. 本文主要内容 4种方式实现计数器功能,对比其性能 介绍LongAdder 介绍LongAccumulator 需求:一个jvm中实现 ...

  9. python request接口测试笔记(1)

    python request接口测试笔记(1) 涉及到的功能说明: 需要登录拿到token,才能进行下一个接口的请求 读取csv文件中的信息,作为接口的参数 将接口响应结果,写入csv文件,以便分析统 ...

  10. [Python] socket发送UDP广播实现聊天室功能

    一.说明 本文主要使用socket.socket发送UDP广播来实现聊天室功能. 重点难点:理解UDP通讯流程.多线程.UDP广播收发等. 测试环境:Win10\Python3.5. 程序基本流程:创 ...