Process
如何獲得一個非常短的過程的環境變數?
我有一個非常短的過程,我想檢查環境變數以進行調試。從人類的角度來看,這個過程是即時的。這個例子更好地說明了這一點。
例子
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
.