私は前景から背景に、またはその逆に切り替える方法を基本的に理解していますが、背景で複数のタスクを実行する方法を見つけることを試みています。複数のタスクをバックグラウンドに配置しようとしましたが、そのうちの1つだけが実行されています。バックグラウンドで複数のタスクを実行できるシナリオが必要です。
私はこれに会ったウェブサイトバックグラウンドで複数のジョブが実行されていることがわかります。バックグラウンドで複数のタスクを実行する方法を分析するのに役立ちますか?
答え1
&
を使用して複数のバックグラウンドタスクを開始できます。
順次実行する例:
(command1 ; command2) &
または、複数のジョブを並列に実行する
command1 & command2 &
これにより、バックグラウンドで複数のジョブが実行を開始します。
ジョブをバックグラウンドで実行するには、ターミナルを終了した後を使用すると、ターミナルを終了した後にジョブがプロセスに送信されませんnohup
。SIGHUP
例:
nohup command &
答え2
ジョブを開始し、&
最後にフラグがある場合はそれをバックグラウンドに送信します。バックグラウンドジョブはいくらでも持つことができます。
バックグラウンドジョブに端末入力が必要な場合は自動的に一時停止し、次のコマンドプロンプトの前(別のコマンドを実行した後)または次を使用している場合はすぐに通知されます。set -b
。
ログアウトすると、実行中のすべてのバックグラウンドプロセスは端末が消えたことを知らせる信号を受け取ります。この信号のデフォルトの動作はプロセスを終了することですが、バックグラウンド操作を開始してそれを変更できますnohup
注文する。
長期実行バックグラウンドジョブの場合は、次を使用することもできます。at
コマンドは、特定の時間(可能性がありますnow
)で別々のデーモンによってコマンドが開始されるようにします。この場合、コマンドの出力は電子メールで送信されますが、そのためにはコンピュータの電子メールシステムが正しく設定されている必要があります。
答え3
ジョブに端末の入力や出力が不要であることを確認してください。これらはファイルから出るか、ファイルに入る必要があり、永遠に幸せになるでしょう。