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!