db2diagをcronから呼ぶときの注意
コマンドラインでdb2diagを呼ぶと問題なく動作するのに、cronから呼ぶと動作しないという問題だ。
昔の自分は確かに分かっていたのだが、すっかり忘れてた。同じことで悩む人がいないように、メモしておこう。
注意すべきは、2点。
- db2profileを最初に読み込ませるのを忘れるな
- db2diagの-readfileオプションを忘れるな
一つ目は、db2diagに限らない、db2スクリプトでのお約束。以下がbashでの例。
if [ -f ${HOME}/sqllib/db2profile ]; then
. ${HOME}/sqllib/db2profile
fi
二つ目は、コマンドラインから呼ぶときは不要だからわかりにくい。マニュアルでのこのオプションの説明を一部引用すると
This option can be used in scripts to guarantee that db2diag will read from a file and not from a terminal, especially in situations when stdin is disabled or when automated tools are used.
ってことだ。
追記:いま見たら、最後のDB2関連投稿はなんと、9年前!あれからいろんなことがあったなぁ(遠い目