Linux

【Linux】プロセスとジョブ

 

プロセス

プロセスとは、メモリ上で実行状態にあるプログラム。

Linuxでの実行の流れは以下。

1 シェルがコマンドを実行
2 カーネルが実行ファイルを読み出してメモリに格納
3 メモリ内容にしたがってCPUがプログラムを実行

すなわち、3のところでプロセスが存在している。

特徴

・1つのコマンドに対して、1つのプロセスが存在する。
lessコマンドが3個同時に実行されていると、3つのプロセスが走る。

・psコマンドでプロセス確認可能

・常に複数のプロセスが同時に動いている(マルチタスク機能)

psコマンドのオプション

psコマンドのオプションは歴史的な理由から、ハイフン有りと無しの指定がある。
現在はハイフン無しが、主流なのでよく使うものを見ていく。

・x :ユーザーが実行している全てのプロセスを表示。(本来はターミナルに接続されてる物のみ)

・ux :psコマンド実行ユーザーのプロセス全てを、詳細情報と共に表示。

・aux :全てのユーザーのプロセスの詳細情報まで含め表示。

ジョブ

シェルから見た処理の単位。
(プロセスはカーネルから見た処理の単位)

パイプラインによって、複数コマンドを指定した場合、
プロセスはコマンドの個数分存在するが、
ジョブば1つとなる。

 

ジョブの停止

Ctrl+zでジョブを停止可能。
ジョブは終了していないので、再び実行すれば、以前の続きからスタート可能。

ジョブの確認

jobsコマンドで現在のjobを確認可能。
そこで、job番号と現在の状態、実行コマンドを確認できる。

停止したジョブを復活

fgコマンドでユーザー入力可能な状態に復活可能。
fgはフォアグラウンドの略。

$ fg  %(jobsで確認したjob番号)

これで停止していたジョブが続きから復活。

ジョブをバックグラウンドで動かす

bgコマンドで該当コマンドをバックグラウンドで実行しながら、他のコマンドを打てます。

Ctrl  +zで停止した後に以下のコマンドを打ちます。

$ bg %(jobsで確認したjob番号)

また最初からバックグランドで実行したい場合は以下のコマンド。
末尾に&

$ 対象コマンド &

ジョブ・プロセスの終了

両者ともkillコマンドを使う。

ジョブ

$ kill %(job番号)

プロセス

$ kill プロセス番号

 

killとは

killとはジョブ・プロセスを終わらすコマンドではない。
実はシグナルを送るコマンド。

kill コマンドにはデフォでTERMと言うシグナルがついており、
これが終了を意味している。

TERM=terminate つまり終了。

 

TERMINATE!!