「バックグラウンド ジョブ」とは、ユーザーとやり取りしていないジョブのことです。tty を制御せず、単にその役割を果たします (通常は黙って)。フォアグラウンド ジョブはその逆で、tty を制御してユーザーと対話します。
Control-Z は、最新のフォアグラウンド プロセス (tty と対話する最後のプロセス) を一時停止します (シェルが通常行うように、そのプロセスが一時停止を無視する手順を実行しない限り)。通常、これによりシェルに戻り、コマンド bg
を入力できます。 中断したばかりのプロセスをバックグラウンドに移動する (実行を継続させる) または fg
Ctrl+Z を押すと TSTP
が送信されます プロセスにシグナルを送ります。これにより実行が停止し (カーネルはプロセスにそれ以上の CPU 時間をスケジュールしません)、プロセスは処理を続行するための CONT を待機しています。
kill -TSTP
経由でこれをエミュレート/複製できます と kill -CONT
(kill
以降 名前にもかかわらず、指定されたシグナルをプロセスに送信します!)
シェルにはプロセスを「バックグラウンド」にする機能がありますが、これはシェルとプロセスの間の関係です。プロセス自体には、「バックグラウンド」または「フォアグラウンド」という概念は実際にはありません。
詳しくはこちらをご覧ください。
このコマンドを検討してください。ラップトップで 4.5 秒:
echo 2^10000000 | bc -lq | wc -c
Ctrl を押したとき +Z 、計算が中断されます。 fg
を使用してフォアグラウンドで計算を再開するオプションがあります 、または bg
を使用してバックグラウンドで再開します .後者は、次の実行とほぼ同じです:
echo 2^10000000 | bc -lq | wc -c &