• 検索結果がありません。

プロセスやジョブに関するコマンド

ドキュメント内 UNIX ( ) (ページ 96-101)

第 7 章 基本コマンド (3)

7.3 プロセスやジョブに関するコマンド

7.3.1 プロセス, ジョブ

まず最初に,言葉の定義をしておきましょう.

コンピュータで実際に動いている途中のプログラムのことを「プロセス」と呼びます. また,特定の仕事 をこなすための一連のプログラムの流れのことを「ジョブ」と呼びます.

さて, UNIXの特徴ひとつに,マルチプロセスというものがあります. これは, 1台のコンピュータで同時 に複数のプロセスを実行できるという機能のことです.

マルチプロセスの機能を持っているオペレーティングシステムを使っている場合は,例えば数値計算のプ ログラム実行しながら電子メールを読むというよう使い方ができます. これに対し,マルチプロセスの機能 を持っていないオペレーティングシステムでは,コンピュータにある仕事をさせたときには,コンピュータ は完全にその仕事にかかりっきりになってしまい,他のことは何もできなくなります.

コンピュータには,ふつう1台から数台のCPU (中央演算装置,プログラムを順番に実行してゆく回路の こと)が塔載されています. CPUが1台しかないコンピュータでマルチプロセス処理をおこなうときには, 実際には処理をしてくれるCPUは1台しかないわけですから,いろいろなプロセスが交代でCPUを使う ことにより,マルチプロセス機能は見掛けの上だけで実現されます. あるプロセスが一定時間CPUを使う と,他のプロセスがCPUを横取りしてしまいます. ただし, CPUの処理能力が十分に高ければ,コンピュー タを使っている人には,実際にマルチプロセス機能が実現されているように見えます. これに対し, CPUが 複数塔載されているコンピュータでマルチプロセス処理をおこなうときには,実際に複数のプロセスが同時 に実行されます.

7.3.2 ps: 稼働中のプロセスの表示

プロセスの一覧を表示してその状態を知るためのコマンドがpsです.

psは 英単語 processの略です.

では,さっそくこのコマンドを使ってみましょう. ktermのウィンドウの中で, ps

- (7.15)

と入力して下さい. すると,画面には例えば図7.8のような情報が表示されます. 表示される内容は人によっ て違います. 図7.8とは同じにならないはずなので注意して下さい. 各プロセスはプロセス番号という番号 を持ち,かつ状況に応じていろいろな状態になります. ここにプロセス番号とは,実行すべきプロセスにオ ペレーティングシステムが割り振る番号のことをいいます.

7.3. プロセスやジョブに関するコマンド 79

図7.8: コマンドpsの出力の例

PID TT STAT TIME COMMAND 248 p5 R+ 0:00.22 ps

プロセス番号 制御端末名

プロセスの状態

そのプロセスが

実行された時間 実行されている コマンド名

図 7.9: コマンドpsの出力の見方

図7.8の見方を図7.9に示します.

続いて, プロセスの状態について説明しましょう. プロセスの状態には, R (実行可能) , T (停止中) , D

(休眠中かつ中断付加) , S (休眠中) , Z (ゾンビ) , W (常駐ページなし) , N (正のナイス値)があります. こ

れらが組み合わせて表示されることもあります. これらの詳細の大部分についてはここでは説明しません が,このうち, Z(ゾンビ)についてのみ若干注意しておきます.

ゾンビという言葉のもともとの意味は「生ける死体」ですが, UNIXの世界におけるゾンビとは, 絶対に 発生しないできごとを待っているために永遠に消滅することのないプロセスを表します. ゾンビプロセスは 何の役にも立ちませんし, コンピュータの処理能力を浪費します. ゾンビを見付けたら,即座に強制終了し ましょう. ゾンビの強制終了の方法は後で説明します.

コマンドpsは,通常はあなた自身に関係したプロセスの情報のみを表示します. 一方で,いろいろなオプ ションを使うことによって, コマンドpsが出力する情報を変化させることができます. よく使われるオプ ションを表7.2に示します. これらを組み合わせて使うこともできます.

表7.2: コマンドpsのよく使われるオプション オプション 機能

a すべてのプロセスの情報を表示

u 各プロセスのユーザ名と開始時刻を表示 x 制御端末を持たないプロセスの情報も表示 w 1行あたりに表示される情報の量を増やす

ps␣auxw

- (7.16)

と入力してみて下さい. この操作によって,現時点において動いているすべてのプロセスの一覧を見ること ができます.

7.3.3 バックグラウンドジョブとフォアグラウンドジョブ

バックグラウンドジョブとフォアグラウンドジョブという考え方を理解するために,まず例題をやってみ ましょう.

ktermのウィンドウの中で,

mule␣&

- (7.17)

と入力して下さい. すると,

muleはふつうに使える

ktermもふつうに使える

という状態になります. この状態を,

Muleがバックグラウンドで走っている (7.18)

といいます.

次に,先のMuleを終了させてから, ktermのウィンドウの中で, mule

- (7.19)

と入力して下さい. すると,

Muleはふつうに使える

ktermでは何もできない

という状態になります. この状態を,

muleがフォアグラウンドで走っている (7.20)

といいます.

7.3.4 フォアグラウンドで動いているプロセスの強制終了と一時的中断

フォアグラウンドで稼働中のプロセスを強制終了するための方法はC-cと入力することです. C-cで強制 終了させたプロセスを再開することはできません. これに対し,稼働中のプロセスの実行を一時的に中断す るためにはC-zと入力します. C-zで中断されたプロセスは再開できます. 表7.3にこれらをまとめておき ます.

表 7.3: プロセスの強制終了と一時的中断 C-c プロセスを強制終了する C-z プロセスを一時的に中断する

みなさんが(7.3.3)の操作をおこなっていれば,現在コンピュータ上にktermのウィンドウとMuleのウィ ンドウが開いているはずです. では, ktermのウィンドウにマウスカーソルを移動させて,

C-c (7.21)

と入力して下さい. するとMuleが強制終了されます.

では,次に,もう一回ktermのウィンドウから

mule

- (7.22)

と入力してMuleを起動し,次に マウスカーソルをktermのウィンドウ内に移動させてから

C-z (7.23)

と入力して下さい. すると, Muleの実行が中断されます. この状態で,

ktermはふつうに使える

Muleのウィンドウ内では何もできない ことを確認して下さい.

7.3. プロセスやジョブに関するコマンド 81

7.3.5 fg:ジョブのフォアグラウンドでの再開

一時的に中断されているジョブをフォアグラウンドで再開するには, fgというコマンドを使います. この コマンド名はforegroundの略です. 使い方は,

fg

- (7.24)

と入力するだけです.

先ほどの例でMuleが一時的に中断されているとき, ktermのウィンドウ内で fg

- (7.25)

とタイプしてみて下さい. すると

ktermのウィンドウ内ではC-cとC-z以外は何もできない

Muleのウィンドウはふつうに使える という状態になります.

7.3.6 bg:ジョブのバックグラウンドでの再開

一時的に中断されているジョブをバックグラウンドで再開するには, bgというコマンドを使います. この コマンド名はbackgroundの略です. 使い方はfgと同じで,

bg

- (7.26)

と入力するだけです.

ではktermのウィンドウ内から

mule

- (7.27)

と入力してMuleを起動してから

C-z (7.28)

と入力し,続いて bg

- (7.29)

と入力して下さい. すると, 今度はMuleがバックグラウンドで再開されます.

こんどは,

ktermはふつうに使える

Muleのウィンドウもふつうに使える という状態になっていることを確認して下さい.

7.3.7 ジョブの中断とアイコン化

では, Muleを起動して(すでにMuleが起動している人はもう1個起動する必要はありません), Muleのウィンドウ内で C-z

と入力して下さい. すると, Muleのウィンドウが消え,画面の左下にMuleのアイコンがあらわれます. こ のような場合にMuleを再開する方法は,

アイコンにマウスを合わせてマウス左ボタンをダブルクリック (7.30) です.

7.3.8 kill: プロセスを強制終了する

今度は,プロセスの番号を使ってプロセスを強制終了してみることにします. このためには, killというコ マンドを使います.

ktermのウィンドウ内で

ps

- (7.31)

と入力して下さい. そして,コマンドpsの出力から, Muleに関係した部分を探して下さい. コマンドpsの 出力が図7.10のようになっていた場合は,探すべきものは上から3行目です.

これが探して いるもの

図7.10: コマンドpsでプロセス番号を探しているところ

では,このMuleを強制終了してみましょう. あるプロセスを強制終了するには,先に述べたように,コマ ンドkill を使います. コマンドkill の使い方は,

kill␣-KILL␣(強制終了したいプロセスの番号)

- (7.32)

です. プロセス番号は人によって違います. この例では, kill␣-KILL␣2872

- (7.33)

と入力すると Mule強制終了することができます. なお,他人が実行しているプロセスを強制終了すること はできません.

7.3.9 egrep: 特定のパターンの抜き出し

ここで,ファイルや標準入力などから特定の文字列を含む部分だけを抜き出すコマンドを覚えておくこと にします. このためにはコマンドegrepを使います.

コマンドegrepの使い方は,

egrep␣パターン␣ファイル名

- (7.34)

です.

では,以下の操作をやってみて下さい.

ps␣|␣egrep␣csh

- (7.35)

コマンドpsの出力の中でcshを含む行だけが表示されたことが確認できたでしょうか?

ドキュメント内 UNIX ( ) (ページ 96-101)