Linuxでは、複数のコマンドを1つにまとめた処理のことをジョブといいます。
Linuxサーバーを運用する上で、ジョブを理解することは非常に重要です。
ジョブを理解すれば、さまざまな処理を並列に実行することができるようになります。
本記事では、このジョブについて詳しく解説します。
これからLinuxサーバーを管理してみようと思っている人や、サーバーエンジニアを目指す人は、本記事を参考にジョブを使いこなしてみてください。
\ 2週間無料でお試しできます! /
VPSを使ってみる
目次
ジョブとは
ジョブの種類
ジョブとは、1つ以上のコマンドや、プログラムなどを1つにまとめた処理のことです。
ジョブは、シェルで入力するコマンドライン1行に相当します。
コマンドラインにコマンドを入力し、Enterキーを押下すると、ジョブが実行されます。
2023.06.22
Linuxのシェルとは?シェルスクリプトの実行方法も解説
本記事では、UnixやLinuxを効率よく運用するために欠かせないシェルの機能や種類およびシェルスクリプトの実行方法について解説します。 ...
必ずしも、1コマンド=1ジョブとは限りません。
Linuxでは、シェルでコマンドライン1行に複数のコマンドをパイプで繋げて実行することができるからです。
その場合、繋がったコマンドライン1行が1つのジョブになります。
ジョブには、フォアグラウンドとバックグラウンドの2種類があります。
ジョブを実行すると、フォアグラウンド、バックグラウンドどちらかで動作を開始します。
この2つのジョブについて、詳しく解説します。
フォアグラウンドジョブ
通常、シェルからコマンドラインでコマンドを実行すると、フォアグラウンドジョブとして処理が実行されます。
ユーザーと対話形式で操作できる状態であり、Ctrl+Zを押下してジョブを一時停止することも可能です。
ただしフォアグラウンドでは、ジョブが実行中の間シェルが停止するため、コマンドを入力することができません。
また、フォアグラウンドジョブはサーバーとの接続を切断してしまうと、処理も修了してしまいます。
そのため、サーバーとの接続は処理実行中の間常に接続された状態でなくてはいけません。
「処理の実行に長時間かかるため、実行後放置したい」という場合は、後述のバックグラウンドジョブでの実行が便利です。
以下の例では「vmstat」のコマンドをフォアグラウンドで実行しています。
\ 2週間無料でお試しできます! /
VPSを使ってみる
バックグラウンドジョブ
コマンドを実行する際に最後に「&」をつけて実行すると、バックグラウンドジョブとして処理されます。
バックグラウンドジョブとしてコマンドを実行すると、ジョブは実行中のままでもシェルは停止しません。
そのため、ジョブの終了を待たずに継続してコマンドを入力することが可能です。
また、バックグラウンドジョブはサーバーとの接続を切断した状態でも実行が継続します。
以下の例では、コマンド実行後にジョブIDおよびプロセスIDが表示され、すぐにプロンプトが返ってきていることが確認できます。
プロセスとジョブの違い
ジョブと似たような言葉に「プロセス」があります。
ここでは、ジョブとプロセスの違いについて解説します。
コマンドを実行するとジョブが動作しますが、それと同時にプロセスも生成されます。
プロセスは、OS(カーネル)からみた処理の単位であり、プロセスごとにメモリが割り当てられ処理が実行されます。
プロセスには、プロセスID(PID)が割り当てられ、OS上で管理されますが、ジョブはジョブID(JOBID)が割り当てられ、シェルによって管理される点が異なります。
2023.03.16
Linuxのプロセスとは。psコマンドやkillコマンドの使い方も解説
Linuxサーバーを管理するには、サーバー内で稼働しているプロセスの状況を把握し、必要に応じて強制終了するなどの対応が必要です。 ...
\ 2週間無料でお試しできます! /
VPSを使ってみる
ジョブのコマンド
ジョブを複数実行すると、それぞれジョブが実行しているのか、停止中なのか、きちんと管理できなければいけません。
ここでは、ジョブを管理するためのコマンドについて解説します。
jobsコマンドで、実行中のジョブを確認
jobsコマンドは、バックグラウンドで実行中、および停止中のジョブを表示します。
また、オプションによって、さまざまな情報を合わせて出力することも可能です。
- プロセスIDも表示(-lオプション)
- プロセスIDのみ表示(-pオプション)
- 実行中のジョブのみ表示(-rオプション)
- 停止中のジョブのみ表示(-sオプション)
fgコマンドで、フォアグラウンドジョブとして実行
fgコマンドは、バックグラウンドで実行されているジョブを、フォアグラウンドに切り替えるコマンドです。
fgコマンドとともに、フォアグラウンドに切り替えるジョブIDを指定します。
以下の例では、停止していた「watch ps」コマンドをフォアグラウンドに切り替え、処理を再開しています。
このように、fgコマンドは一時停止していたジョブやバックグラウンドで実行されているジョブをフォアグラウンドに切り替えることができます。
\ 2週間無料でお試しできます! /
VPSを使ってみる
bgコマンドで、バックグラウンドジョブとして実行
bgコマンドは、フォアグラウンドで実行されているジョブを、バックグラウンドに切り替えるコマンドです。
次の例では、バックグラウンドで実行されているジョブをフォアグラウンドに切り替えた後、ジョブを一時停止して再びバックグラウンドに切り替えています。
このように、「fg」「bg」を使うことで、ジョブをフォアグラウンドとバックグラウンドそれぞれに切り替えて実行することが可能です。
killコマンドで、ジョブを終了させる
killコマンドは、実行中のジョブを強制的に終了させるコマンドです。
想定以上に実行に時間がかかりジョブを強制的に終了させたい場合に使用します。
killコマンドでは、プロセスIDを指定します。
以下の例では、「jobs -l」などでプロセスIDを特定し、killコマンドでジョブを強制終了します。
今回紹介したコマンドを使用することで、ジョブをフォアグラウンドに切り替える、バックグラウンドに切り替るなどの操作が可能です。
また、フォアグラウンドでCtrl+Zを使用すれば、そのジョブを一時的に停止することもできます。
これまで解説したジョブ操作をまとめると、以下のようになります。
まとめ
本記事ではLinuxのジョブについて解説しました。
ジョブはフォアグラウンドとバックグラウンドがあり、バックグラウンドで実行することで同時に複数のジョブを実行できます。
バックグラウンドで実行するジョブは状況が確認しづらいため、今回ご紹介したコマンドを利用し適切に管理することが大切です。
ジョブを上手に活用し、作業を効率よく進めましょう。
\ 2週間無料でお試しできます! /
VPSを使ってみる
UnixやLinuxのVPSならミライサーバー
ミライサーバーは、アシストアップ株式会社が提供している、Unix系サーバーに特化したホスティングサービスです。
ミライサーバーのVPSでは、高速処理が可能なSSDを全プランに搭載しています。
OSは、UbuntuやDebian、AlmaLinuxなどの豊富なラインアップから選択することができます。
2週間無料トライアルを実施しておりますので、まずはお気軽にお試しください。