env
の変数を変更するにはどうすればよいでしょうか。 すでに実行中のプロセスの例:/proc/PID/environ?
その「ファイル」はread-only
です 。
長時間実行されるバッチジョブのDISPLAY変数を、強制終了せずに変更または設定解除する必要があります。
承認された回答:
厄介なハックなしではこれを行うことはできません。これにはAPIがなく、環境が変更されたことをプロセスに通知する方法もありません(とにかくそれは実際には不可能であるため)。
それができたとしても、効果があることを確認する方法はありません。プロセスは、突こうとしている環境変数をキャッシュしている可能性があります(変更できるものは何もないはずなので)。
本当にこれを実行したい場合で、問題が発生した場合にピースを取得する準備ができている場合は、デバッガーを使用できます。たとえば、次のStack Overflowの質問を参照してください:
別のプロセスの環境変数を変更する方法はありますか?
基本的に:
(gdb) attach process_id
(gdb) call putenv ("DISPLAY=your.new:value")
(gdb) detach
呼び出すことができる他の可能な関数は、setenv
です。 またはunsetenv
。
これが機能しない可能性があること、またはターゲットとするプロセスがその環境ブロックで「興味深い」ことを行う場合、悲惨な結果をもたらす可能性があることを心に留めておいてください。最初に重要ではないプロセスでテストしてください。ただし、これらのテストプロセスが、突き出そうとしているプロセスにできるだけ近いものであることを確認してください。