やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

Raspbianでフリーズしたら「マジックSysRqキー」で解決する

 再起動が必要だが、作業中のデータ消失やシステム破壊のリスクを下げられる?

参考

使い方

 Raspbianがメモリ不足でフリーズしたとする。このとき以下のようにマジックSysRqキーを用いて復旧する。

  1. Alt + SysRq + S: ファイルシステムをsyncする
  2. Alt + SysRq + E: 全プロセスを終了する
  3. Ctrl + Alt + T でターミナルを起動し、sudo rebootで再起動する

 なお、SysRqキーがない場合はPrtScキーで代用する。

1. Alt + SysRq + S: ファイルシステムをsyncする

 メモリ上にある状態とディスクを同期する。つまりデータを保存する。

2. Alt + SysRq + E: 全プロセスを終了する

 これで終了しないなら、Alt + SysRq + I で強制終了する。

 30秒近く画面が真っ暗になる。しばらく待つとデスクトップが立ち上がり、以下のようなエラーダイアログが出る。

f:id:ytyaru:20181201131809p:plain

 システムがまともに動かない状態。再起動が必要。その前に/tmpなどRAMディスクにファイルがあるなら、バックアップしておくこと。最後にもう一度ファイルシステムをsyncさせておく。
 ここで注意なのは、たぶん60秒周期くらいで全プロセスを強制終了させられること。バックアップ作業途中で急にアプリが終了し、デスクトップ画面になって驚いた。めげずにやる。

3. Ctrl + Alt + T でターミナルを起動し、sudo rebootで再起動する

$ sudo reboot

 再起動する。これで復旧完了。

 なお、メインメニューのShutDownから再起動や終了をしようとしても反応しない。また、sudoをつけてrebootしないとエラーになって実行されない。マジックSysRqキーを使うと、そういう状態になるようだ。

効果

 作業中のデータ消失やシステム破壊する確率を下げられる。

 過去、電源からぶっこ抜くことを何度も繰り返しているうちに、システムが徐々におかしくなってまともに動かなくなったことがあった。こんな悲劇を避けられるかもしれない。

 これまでと比べてかなり手早く安全に復旧できるようになった。

予防方法

 メモリ消費を減らす。

  • アプリを同時に立ち上げない
    • ブラウザとエディタを交互に起動させる
      • アプリの再起動に手間と時間がかかるが仕方ない
  • ブラウザのタブを減らす(最大でも5個以内)
  • RAMディスクのファイルを削除する

 この辺の塩梅は使っているうちに掴めてくる。でも、調べものをしているうち、夢中になってタブやエディタを開きまくり、フリーズに至る。

ダメだった対処方

対処 問題
電源ぶっこ抜き システム破損してOS再インストールする羽目になった
アプリのボタンクリック 稀に効くことがあるが、時間がかかる。これでアプリ終了させて復旧したこともしばしばある
Ctrl + F4 フリーズ中のせいかキー入力を受け付けられない
Ctrl+Alt+Delete 応答せず。フリーズ中だもの
Ctrl+Alt+F2, ps aux, kill ターミナルモードにならない、ログインしようとしてもタイムアウトする(フリーズで遅いせい?)、ps, killから毎回探すの大変

 事実上、電源ぶっこ抜き以外にない。20分くらい待てば復旧するときもあるし、1時間以上経っても復旧しないときもある。

所感

 メモして手元においておくことで、フリーズした時に対処できた。これからはマジックSysRqキーで復旧しよう。