
LinuxC入門|Linuxにおけるジョブ管理の基本
Linux でコマンド操作をしていると、「この処理、ちょっと時間がかかりそうだな」「処理を動かしたまま、別の作業もしたいな」と思うことがありますよね。
そんなときに役立つのが、Linux におけるジョブ管理 という仕組みです。
ジョブ管理を理解すると、
- 処理をバックグラウンドで動かす。
- 一時停止した処理を再開する。
- フォアグラウンドとバックグラウンドを切り替える。
といった操作が自由にできるようになります。
このページでは、ジョブ管理の基本的な考え方から、実際のコマンド操作までを、表や具体例を交えながらやさしく解説していきます。

スクリプトの準備
まずは、ジョブ管理を体験するための簡単なスクリプトを用意します。
このスクリプトは、60 秒待ってからメッセージを表示するだけのシンプルなものです。
すでに作成済みの場合は、この作業は不要です。
[suzuki@AlmaLinux ~]$ mkdir bin
[suzuki@AlmaLinux ~]$ nano bin/sleep.shスクリプトの内容は次のとおりです。
#!/bin/bash
sleep 60
echo "wake up!"保存したら、実行権限を付与します。
[suzuki@AlmaLinux ~]$ chmod a+x bin/sleep.shこのスクリプトを普通に実行すると、どうなるか見てみましょう。
[root@AlmaLinux ~]# bin/sleep.sh60 秒後に wake up! と表示されますが、その間 このシェルでは他のコマンドを入力できません。
このように、シェルを占有して実行される処理を フォアグラウンドジョブ と呼びます。
Linux では、実行中の処理を ジョブ という単位で管理しています。
ジョブには、次のような種類があります。
ジョブの種類
| 種類 | 特徴 |
|---|---|
| フォアグラウンドジョブ | シェルを占有して実行される。 |
| バックグラウンドジョブ | シェルを占有せずに実行される。 |
既定では、コマンドはフォアグラウンドジョブとして実行されます。
バックグラウンドで実行したい場合は、コマンドの末尾に & を付けます。
では、sleep.sh をバックグラウンドジョブとして実行してみましょう。
[suzuki@AlmaLinux ~]$ bin/sleep.sh &
[1] 3273このように表示されると、
・[1] はジョブ番号
・3273 はプロセス ID
を意味しています。
バックグラウンドで動いている間も、すぐに次のコマンドを入力できます。
60 秒経過すると、Enter キーを押したタイミングで次のように表示されます。
wake up!
[1]+ 終了 sleep.sh現在実行中のジョブを確認するには、jobs コマンド を使います。
jobs コマンド
実行中、または停止中のジョブの一覧を表示します。
コマンド書式
jobs [オプション]使用例
[suzuki@AlmaLinux ~]$ jobsジョブ番号や、実行中か停止中かといった状態を確認できます。
ジョブ管理では、一時停止(サスペンド) という操作もよく使われます。
実行中のフォアグラウンドジョブに対して、Ctrl + Z を押すと、そのジョブは一時停止します。
[suzuki@AlmaLinux ~]$ bin/sleep.sh
^Z
[1]+ 停止 sleep.shこの状態では、ジョブは止まっていますが、終了はしていません。
一時停止したジョブは、bg コマンドや fg コマンドで再開できます。
bg コマンド
停止中のジョブをバックグラウンドで再開します。
コマンド書式
bg ジョブ番号使用例
[suzuki@AlmaLinux ~]$ bg 1
[1]+ bin/sleep.sh &fg コマンド
バックグラウンドジョブをフォアグラウンドに切り替えます。
コマンド書式
fg ジョブ番号使用例
[suzuki@AlmaLinux ~]$ fg 1
bin/sleep.sh
wake up!このように、ジョブを前面に戻して処理結果を確認することもできます。
ジョブ管理の基本操作
ここで、ジョブ管理に関する操作を整理してみましょう。
| 操作 | 内容 |
|---|---|
| コマンド実行 | フォアグラウンドジョブとして実行 |
| コマンド & | バックグラウンドジョブとして実行 |
| Ctrl + Z | ジョブを一時停止 |
| jobs | ジョブ一覧を表示 |
| bg | バックグラウンドで再開 |
| fg | フォアグラウンドに戻す |
注意点として、通常のジョブはログアウトすると終了 します。
SSH 接続が切れたり、ログアウトした場合、実行中のジョブも止まってしまいます。
nohup コマンド
ログアウト後も処理を続けたい場合は、nohup コマンド を使います。
ログアウト後も、バックグラウンドでコマンドを実行し続けます。
コマンド書式
nohup コマンド &使用例
[root@AlmaLinux ~]# nohup bin/sleep.sh &
[1] 3886
nohup: 入力を無視し、出力を 'nohup.out' に追記しますこの状態でログアウトしても、処理は継続されます。
再ログイン後、結果は nohup.out に出力されています。
[root@AlmaLinux ~]# cat nohup.out
wake up!ここまで見てきたように、ジョブ管理を理解すると、
- 処理を止めずに別作業ができる。
- 誤って止めた処理を再開できる。
- ログアウト後も安全に処理を続けられる。
といった操作ができるようになります。
ジョブ管理は、Linux を快適に使うためのとても大切な基礎知識です。
