web-dev-qa-db-ja.com

否認されたプロセスを取り戻すにはどうすればよいですか?

以前の多くの質問と同様に、私は自分が画面で実行したかったジョブを実行していることに気づきました。切断する必要があったため、プロセスを却下せざるを得ませんでした。再接続したので、プロセスがまだ実行されていることがわかります。プロセスを「再利用」して、出力を確認し、入力できるようにするにはどうすればよいですか?

この質問は、実行中のプロセスを画面に移動するだけとは異なり、失われたstdin/out/errハンドルを再度開くことを伴います。

12
Sparr

これは重複した質問です- すでに実行中のプロセスをScreenに移動する を参照してください retty を指します。これは、私が常に推測したことを実装する自己記述の恐ろしいハックです可能かもしれませんが、実際に試みたことはありません。プロセスのfd 0、1、および2(それぞれ標準入力、出力、およびエラー)を検出し、それらに接続します。

6
mattdm

プロセスを否認することにより、端末によって発行されたSIGHUPを無視することを効果的に宣言しています。セッションを閉じると(たとえば、bash)、このプロセスはinitが所有するようになります。したがって、所有権を放棄した後でプロセスを再び所有したいという場合は、別のプロセスから所有権を取り除きたいということです。これは実装されていませんが、それには十分な理由があります。 Linuxでこれを正常に行うことは不可能です。

6
Andrew M.