Categories: Windows

本家のお世話-#5。

 本家のお世話-#4。で書いたようにapacheのlogを分けるようにした。access.logへの記入をユーザエージェントや画像の拡張子で分けるようにしたので,大本のaccess.logのサイズがぐっと小さくなり,月一度のローテートがうまくいって,万々歳と自己満足していた。
 実は,access.logの月一度のローテートのほかに,エラーログについては日一度のローテートも始めたていたのだが,使っているのは,本家のお世話-#3。で書いたような非常に雑な .bat だ。ところが,その作業上で,8日と9日に困ったことが起こった。単に,私の知識不足から起こったことなのだが,そのことについて忘れないように書いておこうと思う。

 エラーログを切り出すときにerror”日”.logのようにその日の日付を入れるようにしたのだが,それ(DY)を決めるのに以下のような方法をとっていた。

  1. set DY=%DATE:/=% <—— 年月日を形式○○○○○○で取得
  2. set DY=%DY:~-2% <—— 日付の切り出し。
  3. set /a DY=DY-1 <—— 実際の操作が00:00になるので,一日戻す。

 当然だが,1日の日にこの作業をするとDYは0になってしまう。が,この辺を直すのは面倒くさいので目をつぶることにしていた。ところが,8日と9日に最後のDYが-1になる事態が発生した。
 なんでーっと,いろいろ調べてみたら,バッチファイルでの数値の書き方に次のような制限があることが分かった。
 「数値は,デフォルトでは10進数   接頭辞として0xをつけると16進数   接頭辞として0をつけると8進数」
 うーん,エラーコードなんぞで接頭辞0x (0x0000000Aとか) はよく見るけど,0というのは知らなんだ。

 なるほど,上記の set DY=%DY:~-2% のときに,1日から9日までは,01,02,03,……08,09となるわけで,この間我が家のサーバは8進数として計算しようとするわけだ。set /a DY=DY-1 で数値として計算しようとするとき,01~07までは10進数扱いでも8進数扱いでも問題は生じないが,8進数で08,09はあり得ないから,エラーになって,DYが-1になってしまうわけだ。

 で,これの解決なんだけど,2.と3.の間に
    if “%DY%”==”08” (set DY=8)
    if “%DY%”==”09” (set DY=9)
を入れた。ものすごくその場凌ぎな処置だけど,自鯖だし,影響受けるのは私だけですから(笑)。

o6asan

Recent Posts

超手抜き、レンチン・ミキサー芋羊羹。

この秋よく作った芋羊羹のレシピ…

1年 ago

うー、久々にハマった。

 MariaDB の LTS …

2年 ago

あけましておめでとうございます。

ウサギ年ですねぇ。景気よく跳ね…

2年 ago

docomo の SC-02H 、 SIM ロック解除して Y!mobile で使う。

我が2台目のスマホとして SC…

3年 ago

o6asanの掲示板を引っ越し。-2

箱の準備が終わったので、中身を…

3年 ago

This website uses cookies.