GNU/Linux >> Linux Esercitazione >  >> Linux

C'è un modo per cambiare le variabili d'ambiente di un altro processo in Unix?

Sostanzialmente no. Se avevi privilegi sufficienti (root o giù di lì) e frugavi in ​​/dev/kmem (memoria del kernel), e hai apportato modifiche all'ambiente del processo, e se il processo ha effettivamente fatto nuovamente riferimento alla variabile d'ambiente in seguito (ovvero, il processo non aveva già preso una copia di env var e non stava usando solo quella copia), allora forse, se sei stato fortunato e intelligente, e il vento soffiava nella giusta direzione, e la fase lunare era corretta, forse, potresti ottenere qualcosa.


Probabilmente puoi farlo tecnicamente (vedi altre risposte), ma potrebbe non aiutarti.

La maggior parte dei programmi si aspetterà che env vars non possa essere modificato dall'esterno dopo l'avvio, quindi la maggior parte probabilmente leggerà semplicemente i vars a cui è interessato all'avvio e li inizializzerà in base a quello. Quindi cambiarli in seguito non farà differenza, dato che il programma non li rileggerà mai.

Se hai pubblicato questo come un problema concreto, probabilmente dovresti adottare un approccio diverso. Se fosse solo per curiosità:Bella domanda :-).


Tramite gdb:

(gdb) attach process_id

(gdb) call putenv ("env_var_name=env_var_value")

(gdb) detach

Questo è un hack piuttosto brutto e dovrebbe essere fatto solo nel contesto di uno scenario di debug, ovviamente.


Linux
  1. Qual è il miglior modo indipendente dalla distribuzione/shell per impostare le variabili d'ambiente?

  2. Cambiare il carattere della console in modalità testo?

  3. È possibile modificare l'ambiente di un processo genitore in Python?

  4. C'è un modo per ispezionare l'attuale rpath su Linux?

  5. Utilizzo delle variabili d'ambiente nel comando cURL - Unix

Come modificare la priorità di un processo in Linux

C'è un modo per ottenere l'ultimo jar del server tramite un URL che non cambia?

C'è un modo per modificare l'ID volume di un file .iso dalla riga di comando?

Qual è il modo migliore per imparare SELinux?

C'è un modo per ascoltare il processo?

Variabili d'ambiente di un processo in esecuzione su Unix?