Dependendo da fase em que os processos foram inicializados, eles podem não ter nenhuma variável de ambiente, herdá-los do processo pai ou usar variáveis que estavam no script de inicialização (init.d).
Você pode encontrar as variáveis de ambiente que o processo tem examinando /proc/$PID_OF_PROCESS/environ
:
root@frisbee:~# xargs -n 1 -0 < /proc/1243/environ
UPSTART_INSTANCE=
UPSTART_JOB=rsyslog
TERM=linux
PATH=/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin
UPSTART_EVENTS=filesystem
PWD=/
Você pode encontrar muitas informações sobre um processo examinando seu diretório /proc/
. Por exemplo:
-
O diretório de trabalho atual do processo é vinculado por
/proc/$PID/cwd
:root@frisbee:~# ls -l /proc/1243/cwd lrwxrwxrwx 1 root root 0 apr 30 11:20 /proc/1243/cwd -> /
-
O binário do qual o processo foi
exec()
'ed é vinculado por/proc/$PID/exe
:root@frisbee:~# ls -l /proc/1243/exe lrwxrwxrwx 1 root root 0 apr 30 11:19 /proc/1243/exe -> /usr/sbin/rsyslogd
-
Os descritores de arquivos (arquivos + conexões de rede + soquetes de comunicação interprocessos) podem ser encontrados em
/proc/$PID/fd/
:root@frisbee:/proc/1243/fd# ls -l total 0 lrwx------ 1 root root 64 apr 30 11:20 0 -> socket:[12362] l-wx------ 1 root root 64 apr 30 11:20 1 -> /var/log/syslog l-wx------ 1 root root 64 apr 30 11:20 2 -> /var/log/kern.log lr-x------ 1 root root 64 apr 30 11:20 3 -> /proc/kmsg l-wx------ 1 root root 64 apr 30 11:20 4 -> /var/log/auth.log l-wx------ 1 root root 64 apr 30 11:39 5 -> /var/log/ufw.log
Você pode encontrar como o usuário está executando o processo examinando ps
output:
root@frisbee:/proc/1243# ps -fp 1243
UID PID PPID C STIME TTY TIME CMD
syslog 1243 1 0 11:19 ? 00:00:01 rsyslogd -c5
Anything else I should know?
Muitas, mas você tem que definir essas coisas e encontrá-las ou fazer outra pergunta sobre isso.