Linuxゲリラ戦記

プロセスを殺れ。

左を向いているペンギンみたいなキャラクター、ナックス

15.Linuxのフリーズを直す。killコマンド

ナックス「今日は今までのコマンドの集大成!Linuxのフリーズを直します」

デビー君「いぇーい」

デビー君「……ところでナックス。『フリーズ』って何?」

ナックス「そこからですかっ!?」

ナックス「フリーズというのは、パソコンの画面が突然止まっしまって、キーボードを押そうがマウスを動かそうが何もパソコンが反応しなくなってしまう現象です。メモリをたくさん使うプログラムを実行しているとたまにフリーズします。『パソコンがフリーズした』ではなく『パソコンが固まった』と表現する場合もあります」

デビー君「へー。でも、僕のパソコンは一度もフリーズしたことがないなぁ」

ナックス「そういう人も中にはいるでしょう。でも、せっかくですのでそういう人も今回の解説を試してみてください」

ナックス「さてLinuxの完全なCUI環境(12.これが本当のCUI環境だ!)においてLinuxがフリーズすることはまずありません。Linuxがフリーズするのは、大抵GUI環境で何かを作業している時です」

ナックス「つまり、考え方としては『1.GUIで作業していたら突然パソコンがフリーズしちゃったよ』→『2.CtrlキーとAltキーを押しながらF1キーを押して完全なCUI環境を起動するよ』→『3.完全なCUI環境でコマンドを使って原因であるプロセスを強制終了するよ』→『4.CtrlキーとAltキーを押しながらF7キーを押してGUI環境に戻るよ。さっき原因のプロセスを強制終了させたからフリーズが治ってるよ』となります」

デビー君「え?フリーズしちゃっても、完全なCUI環境を起動することが出来るの?」

ナックス「出来ます。ちなみに、別にF1キーではなくてF2キーでもF3キーでもF4キーでもF5キーでもF6キーでも好きなキーで構いません」

ナックス「さて、プロセスを強制終了させるためのコマンド。それはkillです!」

デビー君「【英和辞書】kill 意味・殺す。死ぬような痛みを与える」

デビー君「パソコンを直すための殺人なんて僕には出来ない……」

ナックス「殺すのは人ではありません。プロセスです」

デビー君「バカ野郎!プロセスだって、必死に生きてるんだよ……!!」

ナックス「そのプロセスは、今、あんたのパソコンの動作を殺してるんだぜ?殺るか、殺られるか……二つに一つだ」

デビー君「僕のパソコンが犠牲になってプロセスが生きられるなら……僕は僕のパソコンを犠牲にする!!」

ナックス「さて。ミニコントはこれくらいにして、弱肉強食のこの世界を生き延びるため、僕達はkillコマンドを学びましょう。killコマンドの使い方はこうです」

$ kill プロセス番号

ナックス「プロセス番号の調べ方は前回(14.パイプとgrep、less。)で教えましたね。今回は試しにブラウザを強制終了してみましょう。おっと。もしこのサイトに検索からたどり着いた人は当サイトをブックマークしておかないと、killコマンドでブラウザが強制的に閉じてしまうため二度と当サイトを見つけられなくなるかもしれません。ぜひ!ぜひ!ぜひブックマークを!」

ナックス「なお、もちろんkillコマンドはGUIでのターミナルやコンソールでも試せます。とりあえずGUI環境で試して、その後完全なCUI環境でも試してみてください」

ナックス「とりあえず私の場合のコマンドの実例を書いておきます」

$ ps aux | grep konqueror
username  2765  1.8 22.8 205856 50728 ?        Sl   20:34   1:01 kdeinit4: konqueror [kdeinit] --silent
username  2872  0.0  0.3   4124   812 pts/2    S+   21:28   0:00 grep konqueror
$ kill 2765
$

ナックス「以上のような作業で特定のプロセスを強制終了することができます。実際にパソコンがフリーズしたときはこんな感じな作業」

CtrlキーとAltキーを押しながらF1キーを押し、完全なCUI環境を起動。
$ ps aux | grep konqueror
username  2765  1.8 22.8 205856 50728 ?        Sl   20:34   1:01 kdeinit4: konqueror [kdeinit] --silent
username  2872  0.0  0.3   4124   812 pts/2    S+   21:28   0:00 grep konqueror
$ kill 2765
CtrlキーとAltキーを押しながらF7キーを押し、GUI環境に戻る。

ナックス「みたいな流れになります。なお、例としてブラウザ(今回はkonquerorで試しましたが、firefoxやoperaの人は適宜自分の環境に置き換えて考えてください。前回のと合わせて考えれば多分できるはず)のプロセスを強制終了させましたが、もちろんkillコマンドでブラウザ以外のプロセス(例えば音楽プレイヤーやペイントソフトなど)を強制終了することも出来ます。ぜひ試してみてください」

ナックス「なお、プロセスの名称がいまいち分からない場合は前回の説明どおりgrepコマンドではなくlessコマンドでプロセス番号を推理することも出来ます」

$ ps aux | less

ナックス「それでもどのプロセスか推理できない場合。皆さん、topコマンドを覚えているでしょうか(13.topコマンドでリアルタイムにプロセスの状況を知る)?topコマンドは実行中のプロセスの状況をリアルタイムで表示するのでした。しかもこいつはメモリの使用率が多いプロセスをより上に表示するのです。つまり、フリーズの原因と考えられるプロセスがより上に表示される!topコマンドでもプロセス番号を確認することが出来ます。」

$ top

ナックス「ただtopコマンドはリアルタイムなのでプロセスの順番が激しく変動し、場合によっては落ち着いてプロセス番号を確認することが出来ない場合があるかもしれません。そういう場合はとりあえずプロセスの名前だけでも確認し、その後」

$ ps aux | grep プロセス名

$ ps aux | less

などで改めてプロセス番号を確認するなどしてみてください」

デビー君「ナックス。僕は『完全なCUI環境』は苦手なんだ。これ以外にフリーズを直す方法は無いの?」

ナックス「初心者のうちは『完全なCUI環境(というと語弊があるな『真のCUI環境』のほうが正しい表現かな)』に苦手意識があり、出来れば使いたくないと思う方もいるかもしれません。もっと単純明快なフリーズの解決方法は電源ボタンの長押しで、パソコンを強制的にシャットダウンしてしまう方法です。その後、普通に起動したらフリーズは直っています」

デビー君「なーんだ。そんなに単純な方法があるのか!じゃぁ最初からそっちを教えてよ」

ナックス「しかし、この方法はkillコマンドと比べてあまり好まれるものではありません。これは、『プロセスを殺し(強制終了し)』かつ『パソコン(というかOS)をも殺す(強制終了する)』方法だからです。なので、初心者のうちは勇気が無いかもしれませんが、慣れてきたらぜひ『真のCUI環境』からkillコマンドでフリーズを直す方法を行うようにしてください」

デビー君「はーい」

ナックス「次回。Linuxのエロ欲望はWindowsのゲーム欲望を凌駕する!です」

デビー君「なんかいきなり俗っぽいテーマだなぁ……」