これら2つのプロセスは次のとおりです。
cat /dev/tty > /dev/null &
cat /dev/zero > /dev/null &
バックグラウンドで実行する必要がありますが、2番目のタスクをフォアグラウンドにインポートすることはできません。
ベストアンサー1
これが2つの一般的なジョブの場合、aa plainはfg
2番目のジョブをフォアグラウンドにインポートします(これが最近一時停止されたバックグラウンドジョブ、または最近開始されたバックグラウンドジョブの場合(他のジョブは一時停止されません))。
ただし、最初の操作(読み取り)の性質により、/dev/tty
TTYで読み取りを試みるとすぐに停止します。fg
したがって、それはなりますそれフロントデスクに戻ります。
他の仕事がないことを考えると、ここで解決策は%-
orを使用することです。%2
ジョブがバックグラウンドに切り替わると(終了コマンドを使用してジョブを開始するか、フォアグラウンドジョブの一時停止を使用してコマンドを&
実行Ctrl+Zして)、ジョブbg
に「ジョブID」または「ジョブ仕様」が表示されます。このジョブIDは通常、小数点以下の桁数%N
で表されます。N
wait
などの複数のコマンドでジョブIDを使用できますkill
。たとえば、このコマンドは、ジョブIDを使用してバックグラウンドジョブにシグナルを送信するために使用できます。fg
bg
kill
デフォルトでは、このfg
コマンドは「現在の操作」に適用されます。現在のジョブのジョブIDは、または%+
で取得できます%%
。現在のジョブは、直前に開始されたバックグラウンドジョブ、または中断されたジョブがある場合は、最新の中断されたジョブです。
バックグラウンドジョブをフォアグラウンドに移動するには、対応するジョブIDを使用してください。
$ sleep 1000 &
[1] 37327
$ sleep 500 &
[2] 83532
$ jobs
[1]- Running sleep 1000 &
[2]+ Running sleep 500 &
$ fg %1
sleep 1000
出力+
でjobs
「現在の作業」を意味します(簡単な呼び出しに切り替えた作業ですfg
)。
POSIX標準特殊ジョブID:
%%
、現在の職業。%+
、のような上記と。%-
、以前の職業。%N
、ジョブ番号N
。%string
、コマンドがで始まるタスクstring
。%?string
、コマンドに含まれる操作ですstring
。