GNU/Linux >> Linux の 問題 >  >> Linux

実行中のプロセスの環境を変更しますか?

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

これが機能しない可能性があること、またはターゲットとするプロセスがその環境ブロックで「興味深い」ことを行う場合、悲惨な結果をもたらす可能性があることを心に留めておいてください。最初に重要ではないプロセスでテストしてください。ただし、これらのテストプロセスが、突き出そうとしているプロセスにできるだけ近いものであることを確認してください。


Linux
  1. 実行中のプロセスの出力リダイレクトを変更するにはどうすればよいですか?

  2. プロセスが常に実行されていることを確認しますか?

  3. 実行中のプロセスのユーザーとカーネルの時間を取得しますか?

  1. Linuxで実行中のプロセスを再起動(またはリセット)する方法は?

  2. Unix で別のプロセスの環境変数を変更する方法はありますか?

  3. Linux でプロセス名を変更する

  1. テキストモードコンソールのフォントを変更しますか?

  2. 同じが実行されている場合はプロセスを確認しますか?

  3. Python で親プロセスの環境を変更することは可能ですか?