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


12

以前の多くの質問と同様に、私は自分がスクリーンで実行したい仕事を実行していることに気付きました。切断する必要があるため、プロセスを否認することを余儀なくされました。再接続したので、プロセスがまだ実行されていることがわかります。プロセスを「回収」して、その出力を確認して入力できるようにするにはどうすればよいですか?

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


回答:


6

これは重複した質問です- 既に実行中のプロセスをScreen移動するを参照してください。これはrettyを指します。 、および2(それぞれ標準の入力、出力、およびエラー)をプロセスに追加し、それらにアタッチします。


私はこのプログラムについて知りませんでした。真実は言われていますが、それを使うのは良い習慣ではありません!とにかく、良い答えです。
アンドリューM.

6

プロセスを否認することにより、ターミナルによって発行されたSIGHUPを無視することを効果的に言っています。セッション(bashなど)を閉じると、このプロセスはinitによって所有されます。したがって、所有権を放棄した後にプロセスを再所有したいという場合、別のプロセスから所有権を取り去りたいと言います。これは実装されておらず、十分な理由があります。Linuxでこれをうまく行うことはできません。


1
プロセスは、そのような他のプロセスを所有していません。否認されたプロセスはまだあなたとして実行されています。
mattdm

質問で示されているように、親セッションが閉じられた後に実行します。これを反映して回答を更新しました。
アンドリューM.

親プロセスはinitに変更されますが、それは所有権とは異なります。プロセスのEUIDおよびUIDは、元のユーザーのもののままです。さもなければ、これは潜在的に悪用される可能性があります。なぜなら、すべてのユーザーが突然、別のユーザーとしてコードを実行する方法を持ち、システムユーザーも同じようになるからです。
mattdm

1
EUID / UID!= PPID。私は許可ではなくプロセスの所有権について話している。
アンドリューM.

はい、「プロセス所有権」という用語の意味を除いて、すべてについて同意すると思います。これは、親プロセスではなく、プロセスが関連付けられているユーザーIDを指します。混乱は、disownbash固有のコマンドが原因である可能性があります。bash固有のコマンドは、名前にもかかわらず、実際にはプロセス所有権の変更とは関係ありません。
mattdm
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.