放棄されたジョブは終了時に停止します

放棄されたジョブは終了時に停止します

リモート サーバーに接続し、次のようなコマンドを実行します。

cat /dev/zero > /dev/null & disown %-

その後、 を実行しlogoutて再接続すると、実行中のプロセスpsが表示されません。なぜでしょうか?cat

答え1

このコマンドは私の環境では動作します。多くのリソースを消費するようです。次の方法を試してみてください:

sleep 999 & disown %-

ps aux | grep sleep代わりに再ログイン後にを実行します。

ただし、プロセスを開始する前にそのプロセスを放棄する必要がある場合は、nohup を使用することもできます。

nohup sleep 999

答え2

「現在の」(最近バックグラウンドになった)ジョブには%%またはを使用します。は%+%-前のjob は、2 番目に最近停止またはバックグラウンド化されたジョブです。ジョブが 1 つしかない場合は、同じ意味になります。ただし、シェル セッションまたはスクリプトの前の部分でバックグラウンド ジョブを実行したままにしていた場合、使用している方法は、%-想定しているジョブを対象としていない可能性があります。

関連情報