Process

如何獲得一個非常短的過程的環境變數?

  • July 15, 2013

我有一個非常短的過程,我想檢查環境變數以進行調試。從人類的角度來看,這個過程是即時的。這個例子更好地說明了這一點。

例子

user:~$ ps aux | grep grep
user   2349  0.0  0.0   4384   840 pts/1    S+   14:47   0:00 grep --color=auto grep

程序的 pid 是 2349。如果我檢查環境變數(或其他資訊):

#Pretty print of environmental variables#
user:~$ xargs --null --max-args=1 echo < /proc/2349/environ
bash: /proc/2349/environ: No such file or directory

該資訊已隨著該過程消失。

在執行程序之前要做什麼才能在程序完成後列出變數?

如果你有strace

strace -v -e execve cmd

如果變數的值太長,您可以增加字元串大小-s

strace -v -s 10000 -e execve cmd

我會將二進製文件移到一側並創建一個包裝器,將環境轉儲到文件中,然後呼叫原始文件。

例如

mv ${cmd} ${cmd}.moved

然後創建一個新文件${cmd}

#!/bin/sh
env > /tmp/cmd-env.log
exec ${cmd}.moved "$@"

而且,不要忘記權限:

chmod a+rx ${cmd}

然後,等待它再次執行,並從/tmp/cmd-env.log.

最後,把原來的程序放回原來的地方:

mv ${cmd}.moved ${cmd}

當然,可以通過將包裝器bin放在$PATH.

引用自:https://unix.stackexchange.com/questions/83085