ITエンジニアの成長ブログ

ITエンジニアとして行う勉強の発信&日々の生活で体験した楽しいことをゆるく発信

Windows標準コマンドでLinuxのtail -fのようなファイル監視を実現する

本日は、Windowsのコマンドについてお話していきたいと思います!
Linuxを使ったことがある方はご存じの方も多いかもしれませんが、"tail -f"コマンドを使用することで常に更新が発生するアクセスログなどのテキストファイルをリアルタイムに監視することができます。
つまり、いちいちファイルを開いて閉じての作業をしないで常にプロンプトに更新されたログが出力されます。
最近、Windows Serverでアクセスログを監視したいなぁと思ったときに上記のLinuxのコマンドのようなことができないものかと思い、調査したのが今回の記事を書いた理由です。そして、結論としてはWindowsでも同じようなコマンドありました。
しかもWindows標準でインストールされているコマンドなので特に何も準備せずに使うことができます。では、簡単に見ていきましょう。

実行環境

AWSで以下のEC2を作成して試しています。
Amazon EC2 Windows Server 2019 DataCenter

ファイル監視のコマンド

まずは、色々説明するよりも実行例が良いと思います。PowerShellを開いて、以下のような構文で実行します。

Get-Content -Wait -Tail 10 -Path "C:\Program Files\Apache Software Foundation\Tomcat 8.5\logs\localhost_access_log.2020-10-01.txt"

上記コマンドを実行している実行画面は以下のようになります。引数に指定しているファイルに更新があれば、プロンプトに出力されます。

f:id:mr_star:20201001013229p:plain
コマンド実行画面①

コマンドの構文の意味

それでは、上記で実行しているコマンドのオプションの意味をここで確認します。
・「Get-Content」
ファイル監視を実現するためのコマンドです。コマンドプロンプトではなく、PowerShellで実行する必要があります。
因みに、本コマンドは別名「cat」があるのでそちらでも問題ありません。

・「-Wait」
「-Path」で指定したファイルを毎秒チェックし、更新があればプロンプトに出力します。

・「-Tail」
このオプションの引数に「-Path」で指定したファイルの末尾から表示する行数を指定します。

・「-Path」
このオプションの引数は、開きたいファイルのパスを指定します。

おわりに

いかがでしたでしょうか。コマンドプロンプトではなくて、PowerShellでしたがあっさり確認することができました。Linuxで使えるような便利なコマンドは他にもたくさんあるのかもしれませんので、また便利なコマンド見つけたら記事にしたいと思います。
今回も最後までお読みいただきありがとうございました。この辺で失礼いたします。