やってみる

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

Raspbianでフリーズ! ターミナルモードでプロセスをkillして復旧する

 こんな方法があるとは知らなかった。

対象環境

手順

  1. ターミナルモードで起動する(Ctrl+Alt+F2
  2. ログインする
  3. プロセスIDを一覧する
  4. 対象プロセスをkillする
  5. Windowモードに戻る(Ctrl+Alt+F7

1. ターミナルモードで起動する

 Ctrl+Alt+F2キーでターミナルモードに移行する。

2. ログインする

raspberrypi login: pi
Passworkd: 

 Raspbianをインストールしたときデフォルト設定なら、ユーザ名はpi、パスワードはraspberry

 なお、パスワード入力するときはタイピングした文字が表示されない。よくある*********みたいな表示にもならない。わかりにくいので注意しながらタイプすべし。

3. プロセスID一覧する

$ ps ax
  PID TTY      STAT   TIME COMMAND
    1 ?        Ss     0:07 /sbin/init splash
...

 後述するが以下でメモリ使用率の高い順に表示できる。

$ ps aux --sort -rss

4. 対象プロセスをkillする

$ kill <PID>

 ps axコマンドで調べたPIDのプロセスを強制終了する。

5. Windowモードに戻る

 Ctrl+Alt+F7キーでWindowモードに移行する。

情報源

実践

try 1

 フリーズしたので試そうとしたが、手順をネットで調べられない。なにせフリーズしてますから……。

 対策:紙に手順をメモる

try 2

 フリーズしたので試したが、まず最初のキー入力を受け付けてくれなかった。そりゃフリーズだものね……。結局、CPUの冷却&20分以上待っていたら復帰した。(キー入力は無かったことにされていた)

 本当にフリーズしていたらそもそもターミナルモードに移行するキー入力を受け付けない。どうしろと……。

try 3

 フリーズしたので試すと成功。ただ、ps axコマンドの結果が長すぎて見切れてしまい、killすべきプロセスIDを見ることができない場合がありそう。そこで、moreコマンドでページ表示してみる。

$ ps ax | more
キー 機能
q 終了
Enter 1行ずつ進む
Space 1ページすつ進む

 さらに、uでCPUやメモリ使用率を表示させる。fでツリー表示。

$ ps auxf | more
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
...

 メモリ使用率でソート。これで一番上のやつをkillすれば復旧できそう。

$ ps aux --sort -rss
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND