はじめまして、たらいと申します。
cygwin使い始めてまだ2ヶ月ばかりで、
unixもろくに知らないような人間です。
現在以下の環境で5分間隔でbashを起動して
某DBのリカバリー処理を行っています。
OS:Win2k Server 5.00.2195(US版OS)
CPU:Intel Xeon 2.8GHz
MEM:1G
処理が正常に終わるとタスクマネージャのプロセスから
bash.exeが消えますが、何かしらのエラーがあった場合に
bash.exeがタスクに残ったままになってしまいます。
当処理はリカバリーに必要なファイルがあるときのみ行うのですが、
正常に終了したり、しなかったり(bash.exeが残る)します。
(1日に2回くらい、多いときで4回ほど残ります)
処理自体は20秒もかかりません。
シェルはバッチファイルから起動し、
「bash -x シェルファイル 引数 > ログ 2>&1」でデバッグも行っていますが、
「exit1」ではなくコマンド(+echo メッセージなど)で終了したりします。
ソースを見ると落ちた次のコマンドが「cat」であることが多いのです。
catでファイルを開いて中身を変数(配列)に入れています。
(変数=`cat ${ファイル}`)
ただし、ファイルは確実に存在し(シェル起動直後にtouchにて作成)、削除したりもしていません。
変数等も何度も確認しましたが問題はありません。
全てのコマンドで、エラー(lsで存在しないファイルの情報を見ようとした時など)チェックを
コマンドの次行でおこない、0以外ならexit 1で終了させています。
catのエラーならこのチェック関数で引っかかるのですが、
そこまで行っていません。
ただ、Win2K Server 日本語OSでのテストではこの様なことは起こりません。(テスト稼動2週間以上エラーは発生しません)
これはただのPGミスなのでしょうか?
それともcigwinのバグなのでしょうか?
またはOSとの相性が悪いだけなのでしょうか?
この様な経験がある方がいましたらご教授ください。
以上、よろしくお願いいたします。
|