デバッグ目的で環境変数をチェックする非常に短いプロセスがあります。人間の観点から見ると、その過程は即時です。この例はこれをよりよく示しています。
はい
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
このプロセスを経ると、情報は消えます。
プロセスが完了した後に変数を一覧表示できるように、プロセスを実行する前に何をすべきですか?
答え1
お持ちの場合strace
strace -v -e execve cmd
変数の値が長すぎる場合は、次のように文字列サイズを増やすことができます。-s
strace -v -s 10000 -e execve cmd
答え2
バイナリを片側に移動し、環境をファイルにダンプし、元のファイルを呼び出すラッパーを作成します。
例えば
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
。