5.1.5. シェルのジョブ制御/Shell job control

5.1.5.1. コマンドの履歴/Command history

シェルは、入力されたコマンドの履歴を覚えている。 この履歴を呼び出す簡単な方法は、カーソル操作で遡ることである。 コマンド入力を求められている局面でカーソルの「↑」「↓」で履歴を呼び出すことができる。

カーソルで一行ずつ呼び出す他に、履歴をまとめて表示することもできる。:

history

で履歴を表示できる。過去に実行したコマンドがヒストリ番号とともに表示される。 「!」に続いてヒストリ番号を指定すれば、そのコマンドを再度実行することができる。 例えば:

!25

と入力すれば、25番のコマンドを再度実行できる。

5.1.5.2. バックグラウンド処理/Running in background

処理に時間がかかるプログラムをバックグラウンドで実行させることができる。 そのためには、コマンドラインの最後に「&」をつける。

例えば、長時間かかることが分かっているmakeを実行して、メッセージは全てファイルに 残しておくのであれば、次のように入力する:

make >& make.log &

行末の「&」がバックグラウンド実行の指定である。

5.1.5.3. ジョブ制御/Job control

バックグラウンド指定をつけて起動したコマンドは、バックグラウンドジョブ(background job)と呼ばれる。

ジョブにはバックグラウンドジョブの他に、フォアグラウンドジョブ(foreground job)、サスペンドされた ジョブ(suspended job)という3種類のジョブがある。

バックグラウンドジョブを複数起動した場合に、ジョブの一覧を表示したり、特定のジョブを 中断したり、あるいはフォアグラウンドジョブに切り替えたりすることができる。

それら一連の機能が、シェルのジョブ制御機能である。

5.1.5.3.1. ジョブのサスペンド/Suspending a job

フォアグラウンドジョブとして実行していたプログラムをサスペンドするには、Ctrl-z を押す。エディタなどで編集中に間違えてCtrl-zを押すとエディタの画面が消えてシェルの 画面に戻ることがあるが、それはエディタのジョブがサスペンドされたためであって、 エディタジョブが終了したわけではない。

間違えてCtrl-zを押してしまった場合には、この後説明する fg コマンドを使えば、 再びフォアグラウンドタスクとして処理を再開できる。

故意にサスペンドを使うシチュエーションとしては、エディタを一旦抜けだして、 何かを確認する作業をする場合などがある。

5.1.5.3.2. ジョブをフォアグラウンドジョブにする/Bring a job to the foreground

サスペンドしたジョブやバックグラウンドジョブをフォアグラウンドジョブに切り替えるには、 fgというコマンドを使う:

fg

バックグラウンドジョブが複数ある場合に、ジョブを指定するには、「%ジョブ番号」を指定する。:

fg %2

5.1.5.3.3. ジョブをバックグラウンドジョブにする/Put a job in the background

一旦サスペンドしたジョブをバックグラウンドジョブに切り替えて、処理を継続させるには、 bgコマンドを使う。:

bg

5.1.5.3.4. ジョブ一覧を表示する/List all jobs

バックグラウンドジョブとサスペンドされているジョブの一覧を表示するには jobs コマンドを使う。:

jobs