GNU/Linux >> Linux の 問題 >  >> Linux

fgおよびbgコマンドを使用してLinuxバックグラウンドジョブを管理する方法

LinuxおよびUnixシステムでは、ジョブは実行を開始し、まだ完了していないタスクとして定義されます。各タスクは基本的に、プロセスである実行中のプログラムです。

各ジョブには、ジョブ番号(ジョブID)と呼ばれる一意のIDが割り当てられます。ユーザーの介入なしにバックグラウンドでジョブを実行でき、現在のジョブとしてフォアグラウンドで実行することもできます。

このチュートリアルでは、Linuxでジョブを管理するためのfgおよびbgコマンドについて学習します。

bgコマンド

割り込み信号によって停止されたプロセスは、bgコマンドを使用してバックグラウンドで続行できます。

$ nautilus
^Z
[1]+ Stopped nautilus

このプロセスはctrl+zで停止されました 割り込み信号。停止したプロセスは、jobsコマンドで確認できます。ただし、確認する前に、別のジョブを作成して停止信号で中断​​しましょう。

$ jedit
9:22:28 AM [main] [warning] jEdit: inifPLAF failed to set required l&f
9:22:29 AM [main] [warning] jEdit: inifPLAF failed to set required l&f
^Z
[2]+ Stopped jedit

$ jobs
[1]- Stopped nautilus
[2]+ Stopped jedit

ジョブのステータスが停止していることがわかります。プラス記号(+)は、現在のジョブを示します。マイナス記号(-)は、前のジョブを示します。ここで、停止したジョブをバックグラウンドで実行するには、bgコマンドを使用します。デフォルトでは、引数が指定されていない場合、bgは現在のジョブをバックグラウンドで実行します。

$ bg
[2]+ jedit &
$ jobs
[1]+ Stopped nautilus
[2]- Running jedit &

bgコマンドは、引数としてジョブ番号を受け取ることができます。ジョブ番号は、ジョブの出力の角かっこで示されます。

上記の例では、nautilusのジョブ番号は1です。したがって、このジョブ番号を使用して、バックグラウンドでジョブを実行します。 % 仕事番号を示すにはサインが必要です。

$ bg %1
[1]+ nautilus &

$ jobs
[1]- Running nautilus &
[2]+ Running jedit &

bgコマンドは、その名前でジョブを参照することもできます。例:%String 名前が指定された文字列と%?Stringで始まるジョブを指します 名前に指定された文字列が含まれているジョブを指します。

説明のために、2つの停止したジョブがあります。

$ jobs
[1]+ Stopped nautilus
[2]- Stopped jedit

$ bg %nau
[1]+ nautilus &

$ jobs
[1]- Running nautilus &
[2]+ Stopped jedit

$ bg %?ed
[2]+ jedit &

$ jobs
[1]- Running nautilus &
[2]+ Running jedit &

fgコマンド

fgコマンドはbgコマンドに似ていますが、コマンドをバックグラウンドで送信する代わりに、コマンドをフォアグラウンドで実行し、現在の端末を占有して、プロセスが終了するのを待機する点が異なります。

# jobs
[1]- Stopped makewhatis
[2]+ Stopped vi

引数がない場合、fgは現在のジョブをフォアグラウンド(この場合はvi)で実行します。

# fg
vi

コマンドはフォアグラウンドで実行されているため、コマンドが終了するまでターミナルに戻りません。そのため、viが終了するため、jobsコマンドに表示されるジョブは1つだけになります。

# jobs
[1]+ Stopped makewhatis

# fg %1
makewhatis

# jobs

残りの仕事はありません。 bgのように、%String および%?String fgでも機能します。

# jobs
[1]- Stopped makewhatis
[2]+ Stopped vi

# fg %v
vi

# fg %?what
makewhatis

結論

このチュートリアルでは、いくつかの例を使用して、fgおよびbgコマンドを使用してジョブ制御を行う方法を学習しました。楽しんでいただければ幸いです。以下のコメントセクションに提案を残してください。


Linux
  1. Linuxコマンドをバックグラウンドで起動し、ターミナルでプロセスをデタッチする方法

  2. Linuxでサービスを管理および一覧表示する方法

  3. Linux で「at」コマンドを使用してジョブをスケジュールする方法

  1. Linuxでパイプと名前付きパイプを使用する方法(例付き)

  2. Linuxコマンド:jobs、bg、およびfg

  3. Linuxのコマンド履歴を管理する方法

  1. Linuxでtcpdumpコマンドを使用してパケットをキャプチャおよび分析する方法

  2. systemctlコマンドを使用してLinuxサービスを管理する方法

  3. Linux の jobs コマンド オプション