изменить среду работающего процесса

Как можно изменить какую-либо переменную в env уже запущенного процесса, например через /proc/PID/environ? Этот «файл» read-only .

Необходимо изменить или отключить переменную DISPLAY долговременного пакетного задания, не убивая его.

One Solution collect form web for “изменить среду работающего процесса”

Вы не можете сделать это без неприятных хаков – для этого нет API, никоим образом не уведомлять о том, что изменилась его среда (так как это вообще не возможно).
Даже если вам удастся это сделать, нет никакого способа убедиться, что это будет иметь какое-либо влияние – процесс может очень хорошо кэшировать переменную среды, которую вы пытаетесь выталкивать (поскольку ничто не должно меняться ).

Если вы действительно хотите это сделать и готовы подобрать кусочки, если все пойдет не так, вы можете использовать отладчик. См. Например, этот вопрос переполнения стека:
Есть ли способ изменить переменные среды другого процесса?

По существу:

 (gdb) attach process_id (gdb) call putenv ("DISPLAY=your.new:value") (gdb) detach 

Другие возможные функции, которые вы могли бы попытаться вызвать, – setenv или unsetenv .

Пожалуйста, имейте в виду, что это может не сработать или иметь ужасные последствия, если процесс, на который вы нацеливаете, делает «интересные» вещи с помощью блока среды. Сначала проверьте его на некритических процессах, но убедитесь, что эти тестовые процессы максимально близки к тому, который вы пытаетесь вытолкнуть.

  • Когда прирастают мифы? Как процесс работает в одно мгновение?
  • Есть ли более быстрый интерфейс для информации из / proc / net / tcp?
  • Значение / proc / sys / kernel / hostname
  • Скажите fs на свободное место из удаленных файлов СЕЙЧАС
  • Как proc обновляется об устройствах
  • Определите, сколько процессов использует каждый диск?
  • Как проверить, работает ли данный PID?
  • почему я нахожу (под / proc / pid // fd) сокеты со сломанными символическими ссылками
  • Разрешение отклонено в файле aio-max-nr
  • / proc / sys vs / sys / modules / mod / parameter
  • В чем смысл содержимого / proc / net / unix?
  • Linux и Unix - лучшая ОС в мире.