Linuxコマンド辞典 jobs・bg・fgコマンド(プロセス管理)
ジョブリストを表示する「jobs」コマンド、サスペンス中のジョブをバックグラウンドで再開する「bg」コマンド、サスペンス中のジョブをフォアグラウンドで再開する「fg」コマンドの概要と使い方を記載しています。
RHEL Fedora CentOS Vine Deblan Ubuntu Plamo
フォアグラウンドジョブの一時停止
bashでは1つのフォアグラウンドと複数のバックグラウンドジョブを並列で実行できます。複数のターミナルエミュレータを起動して複数の処理を実行したり、仮想端末を切り替えながら処理したりせず、複数の処理を複数で行えるようになっています。思った以上にフォアグランドの処理時間がかかってしまう場合は、ctrl+zで一度停止し、以降で説明するbgコマンドでバックグラウンド実行することができます。
特に指定せずコマンドを実行した場合は、フォアグランドジョブとして実行されます。
jobsコマンド
概要・使用方法
シェルで保持しているジョブリストを一覧表示します。
書式
$ jobs [オプション][ジョブ・・・]
オプション
-l | プロセスIDをリストで表示する |
-p | プロセスIDのみをリストで表示する |
– | 実行中ジョブのみを表示する |
-s | 停止中ジョブのみを表示する |
プロセスIDをリストで表示する。
$ jobs -l
実行結果
[suna@localhost ~]$ jobs -l
[1]+ 948021 停止 wget --no-check-certificate https://download.rockylinux.org/pub/rocky/8/isos/x86_64/Rocky-8.6-x86_64-dvd1.iso
[suna@localhost ~]$
bgコマンド
概要・使用方法
プロセスが一時的に停止している状態、サスペンス状態のジョブをバックグラウンドで再開します。bashなどのシェルは実行中のプロセスを選択して停止、再開及び実行するジョブ制御機能を持っています。シェルはプロセスのジョブリストを保持しています。
リストは「jobsコマンド」で参照できます。プロセスの停止は「Ctrl+z」で行います。bgは、Ctrl+zで停止したプロセスをバックグラウンドで実行させます。実行を再開するとコマンドの最後に「&」をつけたのと同じようにバックグラウンドに回ります。
wgetなど、特に出力を期待しないコマンドで「&」をつけずに実行してしまった場合に有効です。bgにジョブを指定しない場合はシェルが持つカレントジョブが扱われます。
bgコマンド自体は管理者権限は不要です。
書式
$ bg [ジョブ]
bgコマンドで停止中のジョブをバックグラウンドで実行
$ bg ジョブ
wgetで&を付けなかったため、バックグラウンドで実行されなかったので、Ctrl+zで一時停止する。jobsコマンドでジョブ状態を確認し「bgコマンド」でバックグラウンド実行をする。
実行結果
[suna@localohst ~]$ wget --no-check-certificate https://download.rockylinux.org/pub/rocky/8/isos/x86_64/Rocky-8.6-x86_64-dvd1.iso
--2022-07-14 16:20:28-- https://download.rockylinux.org/pub/rocky/8/isos/x86_64/Rocky-8.6-x86_64-dvd1.iso
Resolving download.rockylinux.org (download.rockylinux.org)... 151.101.42.132, 2a04:4e42:a::644
Connecting to download.rockylinux.org (download.rockylinux.org)|151.101.42.132|:443... connected.
WARNING: cannot verify download.rockylinux.org's certificate, issued by ‘/C=US/O=Let's Encrypt/CN=R3’:
Issued certificate has expired.
HTTP request sent, awaiting response... 200 OK
Length: 11213471744 (10G) [application/octet-stream]
Saving to: ‘Rocky-8.6-x86_64-dvd1.iso’
0% [ ] 22,683,648 5.53MB/s eta 33m 20s^Z
#Ctrl+zで停止する
[1]+ Stopped wget --no-check-certificate https://download.rockylinux.org/pub/rocky/8/isos/x86_64/Rocky-8.6-x86_64-dvd1.iso
#jobsコマンドで状態確認
[suna@localohst ~]$ jobs
[1]+ Stopped wget --no-check-certificate https://download.rockylinux.org/pub/rocky/8/isos/x86_64/Rocky-8.6-x86_64-dvd1.iso
#バックグラウンドでジョブを再開
[suna@localohst ~]$ bg 1
[1]+ wget --no-check-certificate https://download.rockylinux.org/pub/rocky/8/isos/x86_64/Rocky-8.6-x86_64-dvd1.iso &
0% [> ] 57,303,040 5.54MB/s eta 75m 52s
fgコマンド
概要・使用方法
サスペンドしているジョブをフォアグラウンドで実行再開します。シェルは実行中のプロセスを選択して停止(サスペンド)、再び実行(リジューム)するジョブ制御機能を持ちます。シェルはプロセスのジョブリストを保持しています。リストはjobsで参照できます。
プロセスの停止はCtrl+zで行います。fgにジョブIDを指定してフォアグラウンドで再開します。ジョブIDを指定しないとカレントジョブを再開します。fg、bg、jobsあれば1つのシェルでいろいろできます。
fgコマンド自体は管理者権限は不要です。
書式
$ fg [ジョブ]
fgコマンドで停止中のジョブをフォアグラウンドで実行
$ fg ジョブ
Ctrl+zで一時停止する。jobsコマンドでジョブ状態を確認し「fgコマンド」でフォアグラウンド実行をする。
実行結果
[suna@localhost ~]$ wget --no-check-certificate https://download.rockylinux.org/pub/rocky/8/isos/x86_64/Rocky-8.6-x86_64-dvd1.iso
--2022-07-14 16:42:00-- https://download.rockylinux.org/pub/rocky/8/isos/x86_64/Rocky-8.6-x86_64-dvd1.iso
download.rockylinux.org (download.rockylinux.org) をDNSに問いあわせています... 2a04:4e42:87::644, 146.75.94.132
download.rockylinux.org (download.rockylinux.org)|2a04:4e42:87::644|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 11213471744 (10G) [application/octet-stream]
`Rocky-8.6-x86_64-dvd1.iso' に保存中
Rocky-8.6-x86_64-dvd1.iso 0%[ ] 55.30M 20.3MB/s ^Z
#Ctrl+zで停止する
[1]+ 停止 wget --no-check-certificate https://download.rockylinux.org/pub/rocky/8/isos/x86_64/Rocky-8.6-x86_64-dvd1.iso
#jobsコマンドで状態確認
[suna@localhost ~]$ jobs
[1]+ 停止 wget --no-check-certificate https://download.rockylinux.org/pub/rocky/8/isos/x86_64/Rocky-8.6-x86_64-dvd1.iso
#フォアグラウンドでジョブを再開
[suna@localhost ~]$ fg 1
wget --no-check-certificate https://download.rockylinux.org/pub/rocky/8/isos/x86_64/Rocky-8.6-x86_64-dvd1.iso
Rocky-8.6-x86_64-dvd1.iso