A quick mental dump in case I forget it again next time. First, check your PID
:
$ ps faux | grep 'your_process'
508 28818 0.0 0.3 44704 3584 ? Sl 10:10 0:00 \_ /path/to/your/script.sh
Now, using that PID
(in this case, 28818), check the environment variables in /proc/$PID/environ
.
$ cat /proc/28818/environ
TERM=linuxPATH=/sbin:/usr/sbin:/bin:/usr/binrunlevel=3RUNLEVEL=3SUPERVISOR_GROUP_NAME=xxxPWD=/path/to/your/homedirLANGSH_SOURCED=1LANG=en_US.UTF-8previous=NPREVLEVEL=N
Now to get that output more readable, you can do two things. Either parse the null character (\0
) and replace them by new lines (\n
) or use the strings
tool that does this for you.
Let’s take the hard path first, to see what’s going on.
$ cat /proc/28818/environ | tr '\0' '\n'
TERM=linux
PATH=/sbin:/usr/sbin:/bin:/usr/bin
runlevel=3
RUNLEVEL=3
SUPERVISOR_GROUP_NAME=xxx
PWD=/path/to/your/homedir
LANGSH_SOURCED=1
LANG=en_US.UTF-8
previous=N
PREVLEVEL=N
Alternatively, you can use strings
directly on the file.
$ strings /proc/28818/environ
TERM=linux
PATH=/sbin:/usr/sbin:/bin:/usr/bin
runlevel=3
RUNLEVEL=3
SUPERVISOR_GROUP_NAME=xxx
PWD=/path/to/your/homedir
LANGSH_SOURCED=1
LANG=en_US.UTF-8
previous=N
PREVLEVEL=N
You could also add the e
modifier to ps
to also show all environment variables. Personally, I find /proc
easier to interpret, since it only shows the environment variables.
$ ps e -ww -p 28818
PID TTY STAT TIME COMMAND
28818 ? Sl 0:00 /path/to/your/script.sh TERM=linux PATH=/sbin:/usr/sbin:/bin:/usr/bin runlevel=3 RUNLEVEL=3 SUPERVISOR_GROUP_NAME=xxx PWD=/var/www/vhosts/worker.nucleus.be/cron-tasks LANGSH_SOURCED=1 LANG=en_US.UTF-8 previous=N
If you’ve got other tricks, I’d love to hear about them!