disown
でbash
の仕事をして気が変わった場合、どうにかして元に戻すことはできますか?
もしそうなら、それをさらに進めて、任意のプロセスをジョブ制御下に置くことは可能ですか(許容できる制限は私がプロセスを所有していることです)?
そして最後に、これにより以下のワークフローが可能になりますか?
^z
の後にbg
が続きます)jobs -p %+
を取得して<pid>
を取得します)screen
またはtmux
セッションを開き、それに接続して、次の手順に使用しますreptyr
を使用してジョブを取得します(reptyr <pid>
)<pid>
を追加します(これはまったく可能ですか?)^Z
)最後の2つのステップを除いてすべてを行うことができます。プロセスがシェルのジョブリストにないため、^Z
でジョブを停止しても機能しません。
私の調査によると、pidをown(disown
の逆)にすることはできませんが、うまくいけば私は間違っています...
一般に、シェルがジョブを「採用」することはできません。シェルの場合、ジョブにはいくつかの意味があります。
これらのほとんどは、シェルとジョブの間に特別な関連付けを必要としませんが、必要なものがいくつかあります。
プロセスが別のプロセスを採用したり、既存のセッションにプロセスをアタッチしたりすることはできません。したがって、採用をサポートするために、シェルは部分的なステータスを管理する必要があります。通常のシェルはこれを実装していません。
ジョブが最初にそのシェルによって開始され、その後勘当されたジョブである特別な場合では、これらの問題は発生しません。ただし、通常のシェルはいずれも、最初にジョブを開始した場合にジョブを追加できるようにする例外の例外を実装していません。
シナリオでは、通常、画面またはtmuxセッションでジョブを開始し、一時停止または再開する場合はPIDを使用するのが最も便利です。