Linux環境でフリーズしてしまったときの対処

Linux

Windows環境ではCtrl+Alt+Delなどでタスクマネージャーを開いて何とかしますが、Linux(特にGUI使用時)の対処方法についてメモ

仮想コンソール

LinuxなどのUnix系OSには仮想コンソールがあらかじめ用意されている。

sshなどではなく直接筐体に接続している状態でCtrl+Alt+F1~F6を押すと仮想コンソールに遷移できる。

通常tty1~tty6までが用意されていて、F1~F6tty1~tty6に遷移できる。

フリーズしたらまず最初に試してみる。

プロセスの強制終了

仮想コンソールへ遷移できた場合、使っていたコンソールがフリーズしていても、こちらはフリーズしていないことがある。

なので、仮想コンソール上でtopコマンドやpsコマンドを用いて、原因を取り除く。

topコマンドの例
top - 14:22:25 up 278 days, 21:45,  1 user,  load average: 0.15, 0.17, 0.22
Tasks: 228 total,   2 running, 226 sleeping,   0 stopped,   0 zombie
%Cpu(s): 12.0 us,  9.3 sy,  0.0 ni, 78.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  7851060 total,   228080 free,  4032424 used,  3590556 buff/cache
KiB Swap:  7815164 total,  7813628 free,     1536 used.  3063580 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
12568 git       20   0  392380   8400   5088 S  29.4  0.1   0:00.05 gitaly-wra+
12567 admin     20   0  162100   2300   1532 R  11.8  0.0   0:00.04 top
 1769 git       20   0 1285012 525952   8496 S   5.9  6.7  18640:34 bundle
 1778 gitlab-+  20   0   41540  11948   1404 S   5.9  0.2   5733:07 redis-serv+
12575 git       20   0  318796   7208   5480 R   5.9  0.1   0:00.01 gitaly
    1 root      20   0  191212   4068   2464 S   0.0  0.1  61:01.94 systemd
    2 root      20   0       0      0      0 S   0.0  0.0   0:04.98 kthreadd
    4 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:+
    6 root      20   0       0      0      0 S   0.0  0.0   4:11.34 ksoftirqd/0
    7 root      rt   0       0      0      0 S   0.0  0.0   5:19.72 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 528:46.28 rcu_sched
   10 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 lru-add-dr+
   11 root      rt   0       0      0      0 S   0.0  0.0   2:00.08 watchdog/0
   12 root      rt   0       0      0      0 S   0.0  0.0   1:59.80 watchdog/1
   13 root      rt   0       0      0      0 S   0.0  0.0  15:37.82 migration/1
   14 root      20   0       0      0      0 S   0.0  0.0   8:18.07 ksoftirqd/1

ps au コマンド例
[admin@localhost ~]$ ps ax
  PID TTY      STAT   TIME COMMAND
    1 ?        Ss    61:01 /usr/lib/systemd/systemd --system --deserialize 23
    2 ?        S      0:04 [kthreadd]
    4 ?        S<     0:00 [kworker/0:0H]
    6 ?        S      4:11 [ksoftirqd/0]
    7 ?        S      5:19 [migration/0]
    8 ?        S      0:00 [rcu_bh]
    9 ?        S    528:46 [rcu_sched]
   10 ?        S<     0:00 [lru-add-drain]
   11 ?        S      2:00 [watchdog/0]
   12 ?        S      1:59 [watchdog/1]
   13 ?        S     15:37 [migration/1]
   14 ?        S      8:18 [ksoftirqd/1]
   16 ?        S<     0:00 [kworker/1:0H]
   17 ?        S      1:53 [watchdog/2]

原因のプロセスを発見したら、kill <PID>で強制終了する (出来ない場合はkill -9 <PID>も試す)

その他

それでもだめならsshなどで接続してみて再起動を試す。

Ctrl+Alt+BackspaseX Window Systemを再起動(GUIでフリーズした場合)

Ctrl+Alt+Deleteでシステムを再起動してみる

参考
仮想コンソール | Linux技術者認定 LinuC | LPI-Japan
Linuxを学習する上で出てくる素朴な疑問や、便利なテクニックなどを紹介しています。
Linux - GUI でマシンがフリーズした場合の対処法!
Linux マシンの GUI でフリーズした場合の対処方法についてのメモです。Unix 系 OS では、カーネルそのものが暴走することは非常に稀で、フリーズするならアプリケーションや X Window System の暴走によるものでしょう。それでも、非常に稀ですが。。。一応、有事に備えて記録しておいた次第です。

コメント

タイトルとURLをコピーしました