飲んだくれの記

方向音痴で熱しやすく冷めやすい、酒とラーメンの大好きなポンコツが綴る徒然の記。

db2diagをcronから呼ぶときの注意

何年かぶりにDB2スクリプトを書いて、ハマった。

コマンドラインでdb2diagを呼ぶと問題なく動作するのに、cronから呼ぶと動作しないという問題だ。

 

昔の自分は確かに分かっていたのだが、すっかり忘れてた。同じことで悩む人がいないように、メモしておこう。

 

注意すべきは、2点。

  1. db2profileを最初に読み込ませるのを忘れるな
  2. 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年前!あれからいろんなことがあったなぁ(遠い目