OS Xを使いはじめて間もないユーザのために、『OS Xを快適に使う「5つの心がけ」』と題し、知られているようで知られていない使いこなし術をお届けする。シリーズ最終回のテーマは「プロセス管理」、システムを安定した状態で使うためのイロハを覚えておこう。

「プロセス」の見分けかた

Finderからダブルクリックして起動する「アプリケーション」。最近では「アプリ」などと短縮形で呼ばれ、「Finder」や「Dock」など起動用ツールもいろいろあるが、昔も今もシステム(OS X)上で実行されるソフトウェアであることに変わりはない。

そのアプリケーションは、1つ以上の「プロセス」で成り立つ。プロセスはコンピュータプログラムの実行単位で、システム全体の"進行管理役"であるカーネルによって管理される。FiderやDockの実行単位は「タスク」であり、OS XのGUIではプロセスの1つ1つまでコントロールできないが、実際には多数のプロセスが並行して存在するのだ。

どのようなプロセスが存在するかは、ユーティリティフォルダにある「アクティビティモニタ」で確認できる。FinderやDock、Launchpadを利用して起動されたプロセス(GUIを持つプロセス)にはアイコンが表示されるため、見ればそれとわかるが、大半のプロセスは意味不明なはず。画面からは、プロセスがいくつかのスレッド(OSが管理可能なプログラムの最小単位)で構成されることも読み取れるが、「多数のプロセスが並行動作している」ことを理解しておけば

OS Xには、GUI(タスクスイッチ)に表示されていない多数の「プロセス」が存在する

ユーティリティフォルダにある「アクティビティモニタ」を起動すると、その時点で実行中のプロセスに関する情報を確認できる

プロセスの「親」と「子」

プロセスには「親子関係」がある。あるプロセスが他のプロセスを起動すると、先に起動していた側が「親プロセス」、あとから起動された側が「子プロセス」となるのだ。

この親子関係を理解することは、プロセス管理に欠かせない。というのも、「子プロセスは親プロセスの資源(メモリなど)を引き継ぐ」ことと、「親プロセスが終了すると子プロセスも終了する」というUNIX系OSに共通の約束事があるからだ。後者を正確にいえば、「親プロセスが先に終了した場合、その子プロセスはlaunchdの子となり、親プロセスのwait()が終了次第完全に破棄される」となるが、ほとんどの場合(親プロセスが正常に終了された場合)は同じ結果となる。

アクティビティモニタでは、プロセスの親子関係も確認できる。試しに、Flash Playerの親プロセスを調べてみよう。Flash Playerのプロセスを選択し、ツールバーの「詳細を表示」ボタンをクリックすればOK。親プロセスはSafari、つまりSafariを終了するとFlash Playerも終了する、という流れが理解できるはずだ。

アクティビティモニタで「すべてのプロセス(階層表示)」を選択すると、実行中のプロセスが「launchd」の子プロセスであることがわかる

Flash Playerの詳細情報を表示したところ。親プロセスがSafariであることが確認できる

プロセスを強制終了/再起動するには

プロセス管理で覚えておきたいワザが、「プロセスの強制終了/再起動」だ。通常どおり「終了」メニューから終了できればいいが、カーソルがグルグル状態(レインボーサークル)になり反応しない、Dockのように終了メニューが存在しないプロセスが挙動不審になった、という場合は特別な対策が必要になる。

方法は3つある。もっともオーソドックスな方法は、Command+Option+ESCキーを押すと現れる「アプリケーションの強制終了」ダイアログを使うこと。反応がなくなったプロセスの多くは、この方法で強制終了できる。Finderは再起動扱いになるが、ファイルサーバに接続しようとしたがタイムアウト処理に時間がかかる場合など、この方法を試してみよう。

プロセス強制終了/再起動で最初に試すべきは、Command+Option+ESCキーを押すと現れる「アプリケーションの強制終了」ダイアログ

もうひとつの方法は、Terminalで「kill」または「killall」コマンドを使うこと。前者の場合、コマンド名に続けてプロセス番号(PID)を指定すれば、そのプロセスを手動で終了できる。しかし、PIDを「アクティビティモニタ」などを使って調べる手間があるため、プロセス名の一部(大文字/小文字が区別される点に注意)をPIDの代わりに指定できるkillallコマンドのほうが扱いやすい。FinderやDockを対象にした場合、再起動処理までしてくれるため、覚えておいて損のないコマンドだ。

最後の方法は、親プロセスを終了/再起動すること。OS Xの場合、FinderやDock経由で起動されたプロセスは「launchd」の子プロセスとなるため、launchdを終了/再起動するという意味になる。結論から言えば、いちどログアウトして再ログインするか、システムを再起動することになるため、前述した2つの方法に比べて時間がかかる。プロセス強制終了/再起動の最後の手段、と理解しよう。

killコマンドの用法

$ kill 1234

※:他ユーザの権限で起動されたプロセスを対象にする場合は、「sudo kill ~」とする必要がある

killallコマンドの用法

$ killall Dock

※:他ユーザの権限で起動されたプロセスを対象にする場合は、「sudo killall ~」とする必要がある