卡在linuxctrld进系统_Linux系统卡死后紧急处理
前言: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.實際操作技巧
同時按下+行不通!只會蹦出來一個屏幕截圖窗口。所以,真正的做法應該是:
注:鍵盤上可以找到一個叫做“Sys Rq”的鍵,在臺機的鍵盤上通常與 Prt Sc 共鍵,在筆記本可能在其他位置,如 Delete。
(1)伸出你的左手,同時按住鍵,別松開
(2)右手先按一下,左手別松開
(3)-E-I-S-U-B 這個序列的推薦使用方式是:R – 1 秒 – E – 30 秒 – I – 10 秒 – S – 5 秒 – U – 5 秒 – B
總結
以上是生活随笔為你收集整理的卡在linuxctrld进系统_Linux系统卡死后紧急处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: salt远程执行python脚本_Sal
- 下一篇: rockbox主题包安装_DUX主题