Windowsの障害調査をしていると、
「ファイルが作成されているか」「ログが更新されているか」を確認する場面がよくある。
そういうときにすぐ使えるのが dir コマンド。
最近は PowerShell を使うことも増えたけれど、
サーバーの調査や古い環境では コマンドプロンプト(cmd)を使う場面もまだ多い。
今回は、実際の障害調査で dir コマンドを使って確認したことをメモとして残しておく。
dir コマンドとは
dir コマンドは、Windows のコマンドプロンプトで使える
ディレクトリの一覧表示コマンド。
基本的には次のように入力するだけで、現在のフォルダにあるファイルやフォルダを確認できる。
dir
表示される主な情報は次の通り。
- ファイル名
- 更新日時
- ファイルサイズ
- フォルダかどうか
GUIのエクスプローラーでも確認できる内容だけれど、
サーバー作業やリモート作業ではコマンドの方が早いことも多い。
障害調査で確認したかったこと
今回の調査では、次のような状況だった。
- バッチ処理が定期的に実行されるはず
- しかし出力ファイルが作られていない可能性がある
- ログファイルが更新されているか確認したい
つまり確認ポイントは
- ファイルが存在するか
- 更新日時はいつか
この2つ。
そのため dir コマンドで対象フォルダを確認した。
フォルダの移動
まずはログの保存先ディレクトリに移動する。
cd C:\logs
この状態で dir を実行すると、
ログファイルの一覧が確認できる。
dir
更新日時で並び替える
ログ調査では、新しいファイルから確認したいことが多い。
その場合は次のオプションを使う。
dir /o-d
/o は並び替えオプションで、-d を指定すると 更新日時の新しい順 で表示される。
これを使うと、
「最後に更新されたログファイル」
をすぐ確認できる。
サブフォルダも含めて検索する
ログがどのフォルダにあるかわからない場合もある。
そういうときは /s オプション。
dir /s
このオプションを付けると
サブフォルダも含めて一覧表示
される。
ログファイルの場所を探すときなどに便利。
ファイル名だけ表示する
スクリプトなどで使う場合は、
余計な情報を表示したくないこともある。
その場合は /b オプション。
dir /b
これは ファイル名だけ表示するモード。
バッチ処理などと組み合わせるときに使いやすい。
実際の調査で分かったこと
今回の確認では
dir /o-d
でログを確認したところ、
ログファイルの更新が止まっていることが分かった。
つまり
- バッチ処理が止まっている
- スケジューラが動いていない
可能性が高い。
その後、タスクスケジューラを確認したところ
実際にジョブが停止している状態だった。
結果として
ログ更新 → dirコマンドで確認 → ジョブ停止発見
という流れで原因に気づくことができた。
PowerShellとの違い
似たことは PowerShell でもできる。
例えば次のコマンド。
Get-ChildItem
PowerShellの方が
- 機能が多い
- フィルタが便利
- スクリプト化しやすい
というメリットがある。
ただし
- 古いサーバー
- 最低限の環境
- cmdしか使えない端末
もまだ多い。
そのため、
シンプルな確認では dir コマンドが役立つ場面も多い。
まとめ
dir コマンドはとてもシンプルなコマンドだけれど、
- ファイルの存在確認
- 更新日時の確認
- ログ調査
など、障害対応では今でもよく使う。
特に覚えておくと便利なオプションは次の3つ。
dir /o-d (更新日時の新しい順)
dir /s (サブフォルダも表示)
dir /b (ファイル名のみ表示)
GUIで確認するよりも早い場合も多いので、
ちょっとした調査のときに覚えておくと便利なコマンドだと思う。


コメント