Preciso solucionar alguns problemas relacionados a variáveis de ambiente em um sistema Unix.
No Windows, posso usar uma ferramenta como o ProcessExplorer para selecionar um processo específico e visualizar os valores de cada variável de ambiente.
Como posso fazer a mesma coisa no Unix? echoing
e env
cmd apenas mostram valores no momento, mas quero ver quais valores o processo em execução está usando atualmente.
Se você deseja ter pid(s) de um determinado executável em execução, você pode, entre várias outras possibilidades, usar
pidof
:EDITAR :
Cito totalmente os comentários de Dennis Williamson e Teddy para obter uma saída mais legível. Minha solução é a seguinte:
Como essa questão tem uma tag unix e todos os outros fizeram um ótimo trabalho abordando a tag linux , você pode obter essas informações no OS X e em outros sistemas derivados do BSD usando
ou
e no Solaris com
O Solaris também suporta o
/proc
diretório se você não quiser lembrar do comando obscurops
.Como outros já mencionaram, no Linux, você pode procurar em /proc, mas há, dependendo da versão do seu kernel, um ou dois limites:
Em primeiro lugar, o arquivo environ contém o ambiente como era quando o processo foi gerado. Isso significa que quaisquer alterações que o processo possa ter feito em seu ambiente não serão visíveis em /proc:
O primeiro shell é um shell de login e inicialmente tem um ambiente muito limitado, mas aumenta-o com o sourcing, por exemplo, .bashrc, mas /proc não reflete isso. O segundo shell herda o ambiente maior desde o início, e é por isso que ele aparece em /proc.
Além disso, em kernels mais antigos, o conteúdo do arquivo environ é limitado a um tamanho de página (4K):
Em algum lugar entre 2.6.9 (RHEL4) e 2.6.18 (RHEL5) esse limite foi removido...
uso correto das opções do BSD para fazer isso (pelo menos no linux):
ou
e sim, ps manpage é bastante confuso. ( via )
Embora pouco documentado, o conteúdo de
/proc/<pid>/environ
conterá apenas o ambiente que foi usado para iniciar o processo.Se você precisar inspecionar o estado atual do ambiente de um processo, uma maneira de fazer isso é usando
gdb
.substitua o PID pelo PID do processo que você deseja ver. Todas as informações sobre um processo em execução estão no diretório /proc/PID/
exemplo: cat /proc/32512/environ
Retirado do wiki do Archlinux :
Você pode criar uma função temporária para analisar os valores em arquivos
/proc/<pid>/environ
. No prompt do terminal:Depois com o pid do processo que você quer, é só usar:
No Linux, eu tentaria dar uma olhada
Para Solaris 5.10, isso funciona:
E já que meu trabalho me faz ser um fan boy do AIX, não esqueçamos:
Ou como a página man chama, "Padrões de Berkeley".
Por qualquer motivo, /proc/PID/environ não existe no AIX.