¿Cómo puedo obtener la siguiente información para un proceso de Linux en ejecución?
- variables de entorno del shell
- directorio de trabajo
- opciones de línea de comando
Respuesta1
Puedes obtener esta información de/procesosistema de archivos, almacena información sobre los procesos en ejecución.
cat /proc/<pid>/environ
cd /proc/<pid>/cwd; pwd -P
cat /proc/<pid>/cmdline
Respuesta2
Si genera el entorno como lo sugiere @atype, obtendrá todas las variables de entorno y sus valores concatenados sin separador.
Para obtener un mejor resultado, utilice
$ xargs -0 -L 1 echo < /proc/21645/environ
LANG=en_US.UTF-8
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
SHELL=/bin/bash
TERM=xterm
LC_MESSAGES=en_US.UTF-8
LANGUAGE=en_US.UTF-8
(salida abreviada por motivos de privacidad)
Explicación
/proc/$pid/environ contiene las variables de entorno como una lista separada por nulos.
xargs es una herramienta para leer una lista arbitrariamente larga de *STDIN y envía sus elementos a una herramienta (echo en este caso) asegurando no exceder la longitud máxima de la línea de comando. El parámetro "-0" cambia xargs para usar nulo como separador de elementos (en lugar del espacio en blanco o nueva línea predeterminado). El parámetro "-L 1" limita el número de elementos a 1. De este modo, cada variable de entorno se genera en una nueva línea.