Explicação

Explicação

Como posso obter as seguintes informações para um processo Linux em execução:

  • variáveis ​​de ambiente shell
  • diretório de trabalho
  • opções de linha de comando

Responder1

Você pode obter essas informações em/procsistema de arquivos, ele armazena informações sobre processos em execução.

  • cat /proc/<pid>/environ
  • cd /proc/<pid>/cwd; pwd -P
  • cat /proc/<pid>/cmdline

Responder2

Se você gerar o ambiente conforme sugerido por @atype, obterá todas as variáveis ​​de ambiente e seus valores concatenados sem separador.

Para melhor saída, use

$ 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

(saída abreviada por motivos de privacidade)

Explicação

/proc/$pid/environ contém as variáveis ​​de ambiente como uma lista separada por nulos.

xargs é uma ferramenta para ler uma lista arbitrariamente longa de *STDIN e alimentar seus elementos para uma ferramenta (eco neste caso) garantindo não exceder o comprimento máximo da linha de comando. O parâmetro "-0" alterna xargs para usar nulo como separador de item (em vez do espaço em branco ou nova linha padrão). O parâmetro "-L 1" limita o número de itens a 1. Assim, cada variável de ambiente é gerada em uma nova linha.

informação relacionada