我有一个进程正在读取一些环境变量来设置自身,但我不确定是哪一个。编程语言对我来说很陌生,所以假设我没有源代码。
有什么方法可以让我嗅探它正在读取哪些变量,就像我知道这个过程正在打开哪些文件strace
一样lsof
。
答案1
对于 C 程序甚至更多程序,strace 也可用于解决此问题。但对于 Java 程序则不行;
/tmp >strace -v -s 1024 /bin/ls |& grep execve
execve("/bin/ls", ["/bin/ls"], ["MANPATH=/usr/share/man", "HOME=/home/zoule", "HOSTNAME=fry01339", "SSH_TTY=/dev/pts/4", "LC_ALL=fr_FR.UTF-8", "USER=zoule", "LC_TERMINAL=iTerm2", "_=/usr/bin/strace"]) = 0