none
Windows2008でのファイルの「更新日時」が更新されない現象 RRS feed

  • 質問

  • 初めてここに質問をさせて頂きます。
    Windows2008(SP無し)環境で主題の現象が発生します。

    常駐しているWindowsサービスがログファイルを作成し、中にテキストを不定期に書き出します。
    エクスプローラを別に起動し、このログファイルが存在するフォルダを表示させて「更新日時」の列を見ていますと、ログファイル内にテキストが書き込まれているはずなのに「更新日時」の列は更新されない(F5キーを押しても変わらず)という現象が発生します。
    この原因とWindows2003以前のように振る舞わせる方法についてご教授頂けますでしょうか。

    ログファイルを掴んでいるプロセス(Windowsサービス)を停止しますとそのときにログファイルの「更新日時」も更新されることを確認しました。
    このときの「更新日時」は、最後にログファイルに書き込みが行なわれた時刻になっていました。

    ログファイルを掴んでいるプロセスが起動したままの状態でも、メモ帳などの他プロセスからログファイルを参照しましたら、そのときにログファイルの「更新日時」も更新されることを確認しました。
    このときの「更新日時」も、最後にログファイルに書き込みが行なわれた時刻になっていました。

    また、ログファイルを掴んでいるプロセスが起動したままの状態でも、1時間~数時間放置していますとログファイルの「更新日時」が更新されることがありました。

    どうもOSは「いつファイルが更新されたか」という情報は持っているようですが、それが反映されていないように思われます。


    Windows2003以前のOSではファイルの内容が書き込まれたらほぼ即時(厳密には若干のタイムラグはありますが)でファイルの「更新日時」にも反映されていました。
    私が使用しているWindowsサービス固有の問題かどうかを確認するために複数のソフトウェアでテストをしましたが、いずれも再現しましたのでWindows2008側の事象と考えられます。


    fsutil behavior set disablelastaccess や
    fsutil  behavior set memoryusage での設定変更、
    ディスクへのファイル書き込みをライトバックからライトスルーへ変更したり等試行しましたが現象は解消できませんでした。

    背景:
    ある監視ツールで幾つかのログファイルに更新があったかどうかを監視したいのですが、このツールはファイルの「更新日時」をチェックしているようです。
    しかし主題のような事象が発生しているために常駐型ソフトウェアのログファイルの監視が出来なくなっております。

    以上 宜しくお願い致します。

    • 移動 Mike Wang (MSCS) 2012年10月3日 12:22 (移動元:Windows Server 2008 R2 全般)
    2011年11月11日 8:21

回答

すべての返信

  • 連投ですみません。

    下記で同じ現象についての情報を見つけました。Windows2008の問題のようです。

    http://blogs.technet.com/b/asiasupp/archive/2010/12/14/file-date-modified-property-are-not-updating-while-modifying-a-file-without-closing-it.aspx

    現時点では修正されていないようでした。

    • 回答としてマーク 田中夢 2011年11月17日 1:38
    2011年11月11日 10:23
  • E-Fujii さん、こんにちは。
    フォーラム オペレーターの田中夢です。

    こちらのご質問につきましては、ご自身で参考になる情報を見つけられたようですね。
     
    今回、E-Fujii さんご自身の返信ではありますが、同じ事象に遭遇された他の方々にも参考になると思われますので、勝手ながら私のほうで [回答としてマーク] をつけさせていただきますね。

     
    また、私の方でも参考になる情報がないかと探してみたところ、日本とアメリカの TechNet フォーラムで似たようなスレッドを見つけましたので、ご紹介させていただきますね。
    どちらのスレッドでも、レジストリで HKLM\System\CurrentControlSet\Control\FileSystem\NtfsDisableLastAccessUpdate の値を設定することにより、最終アクセス日時を有効/無効にする方法を紹介している投稿がありました。有効にするには、値を0に設定するようですので、こちらも試してみてはいかがでしょうか?
    (こちらのKBにも記載がありますように、レジストリの操作は自己責任となりますので、ご注意くださいね。)

    <参考情報>
    - ログファイルの更新日時が変わらない
    http://social.technet.microsoft.com/Forums/ja-JP/windowsserver2008r2ja/thread/2f2864d5-9a39-42d9-ac3f-58d10f58a8fc/

    - File timestamp not updating on 2008 but does on 2003
    http://social.technet.microsoft.com/Forums/en-ZA/winservergen/thread/2b8baca2-9c1b-4d80-80ed-87a3d6b1336f

      
    また何かありましたら TechNet フォーラムをご活用くださいね。
    ---------------------------------------------------------------------
    日本マイクロソフト株式会社 フォーラム オペレーター 田中夢

    2011年11月17日 1:37