プロセス - Linux

プロセス

Linux では、実行中のプログラム(アプリケーション)を管理する単位をプロセスと呼びます。

プロセスのほかにジョブという管理単位があります。ジョブはシェルが管理するプログラムの単位です。

シェルからコマンドを実行する場合、ジョブをフォアグランドとバックグラウンドに切り替える機能があります。

foreground : フォアグランド

前景

background : バックグラウンド

背景

フォアグラウンドとバックグラウンド

バックグランでコマンドを実行する場合は、コマンドの最後に「 & 」をつけます。

次のコマンドは、10秒後に hello と表示します。

(sleep 10; echo hello)&

現在のジョブの一覧を表示するには次のようにします。

[user@localhost ~]$ jobs
[1]+  実行中               sleep 1000 &

フォアグランドのジョブを一時停止にするには、「 Ctr + z 」を入力します。

ジョブをフォアグランドにするには、「 fg コマンド 」を使います。

[user@localhost ~]$ jobs
[1]   実行中               sleep 1000 &
[2]-  実行中               sleep 1001 &
[3]+  実行中               sleep 1002 &
[user@localhost ~]$ fg %1
sleep 1000

ジョブをバックグラウンドにするには、次のようにします。

bg %1

バックグラウンドのジョブを一度フォアグランドにして再度バックグラウンドにするには次のようにします。

[user@localhost ~]$ jobs
[1]   実行中               sleep 1000 &
[2]-  実行中               sleep 1001 &
[3]+  実行中               sleep 1002 &
[user@localhost ~]$ fg %1
sleep 1000
^Z # Ctr + z でフォアグラウンドジョブをサスペンドします
[1]+  停止                  sleep 1000
[user@localhost ~]$ jobs
[1]+  停止                  sleep 1000
[2]   実行中               sleep 1001 &
[3]-  実行中               sleep 1002 &
[user@localhost ~]$ bg %1
[1]+ sleep 1000 &
[user@localhost ~]$ jobs
[1]   実行中               sleep 1000 &
[2]-  実行中               sleep 1001 &
[3]+  実行中               sleep 1002 &

suspend : サスペンド

一時停止

フォアグランドにあるジョブを停止するには、「 Ctr + c 」を入力します。

kill コマンドを使えば、バックグラウンドのジョブを停止することができます。

[user@localhost ~]$ jobs
[1]   実行中               sleep 1000 &
[2]-  実行中               sleep 1001 &
[3]+  実行中               sleep 1002 &
[user@localhost ~]$ kill %1
[1]   Terminated              sleep 1000
[user@localhost ~]$ jobs
[2]-  実行中               sleep 1001 &
[3]+  実行中               sleep 1002 &

コマンド

プロセスの状態を表示するコマンドには、「 ps 」、「 top 」、「 pstree 」があります。

top コマンドには、実行中のプロセスの状態をダイナミックに表示します。