フォアグラウンドでジョブをバックグラウンドに切り替える方法とその逆の方法を基本的に理解していますが、複数のジョブをバックグラウンドで実行できるようにする方法を考えています。複数のジョブをバックグラウンドに配置しようとしましたしかし、そのうちの1つだけが実行状態でした。複数のジョブをバックグラウンドで実行できるシナリオが必要です。
私はこれに遭遇しました ウェブサイト 複数のジョブがバックグラウンドで実行されているのを目にします。
&
複数のバックグラウンドジョブを開始します。
順次実行する例:
(command1 ; command2) &
または複数のジョブを並行して実行する
command1 & command2 &
これにより、バックグラウンドで実行されている複数のジョブが開始されます。
ジョブをバックグラウンドで実行し続けたい場合は、ターミナルを終了するとNohup
を使用できます。これにより、ターミナルを終了すると、SIGHUP
がプロセスに送信されなくなります。
例:
Nohup command &
末尾に&
記号を付けてジョブを開始すると、バックグラウンドに送信されます。バックグラウンドジョブはいくつでも持つことができます。
バックグラウンドジョブが端末入力を必要とする場合、それは自動的に中断され、次のコマンドプロンプトの前(つまり、別のコマンドを実行した後)、または set -b
。
ログアウトすると、実行中のすべてのバックグラウンドプロセスに信号が送信され、ターミナルがなくなったことを通知します。このシグナルのデフォルトの動作はプロセスを強制終了することですが、 Nohup
コマンドを介してバックグラウンドジョブを開始することでこれを変更できます。
長時間実行されるバックグラウンドジョブの場合、 at
コマンドを使用して、特定の時間に別のデーモンによってコマンドを開始することもできます(now
の場合もあります)。 。この場合、コマンドの出力はメールで送信されますが、これにはコンピュータのメールシステムが正しく設定されている必要があります。
ジョブが端末の入出力を必要としないことを確認する必要があるだけです。それらはファイルから来るか、ファイルに移動する必要があり、その後も幸せに実行されます。