redwarrior’s diary

C#, ASP.NET, WEB, G*などの雑多な情報

共有サーバー上のログファイルを tail -f したい。

せっかく、Windows上でログファイルを出力できるようになったので、tail -fでログの監視もしたいと思ったので調べました。

PowerShellを使用すれば、tail -fとほぼ同じことが出来るようですが、別件でCygwinがインストール済みだったので、Cygwinを使ってみました。

Cygwinのインストール

今回はインストール済みなので、飛ばしますがインストールは以下のサイトを参考にしたり適当にググれば良いと思います。Windows 8.1でも変わりません。

パッケージについては覚えていません(笑)。たぶんデフォルトだったような気がします。

orebibou.com

共有サーバーへのアクセス

共有サーバーへのアクセスは簡単でした。以下のサイトの通りです。

$ cd //IPアドレス/ディレクトリ名

とするだけです。

d.hatena.ne.jp

ログファイルがShift_JISのため、tail コマンドで文字化け発生

これでCygwinのターミナル上から、tail -fを実行出来れば問題なかったのですが。見出しの通り、文字コードShift_JISのため、文字化けが発生してしまいました。

以下のサイトによると、nkfをインストールすれば良さそうなので、インストールすることにしました。

ここから色々と書いていますが、最後のほうに手順をまとめましたので、急いでいる方はそちらを参照してください。

quantum fluctuation: tail の出力が cygwin と eshell で文字化けした時の対処法

nkfをインストールする

nkfのインストールには、以下のサイトを参考にしました。だがしかし、makeコマンドの実行でエラーが発生!

makeコマンドがインストールされていないようです。そのため、先にmakeコマンドをインストールすることにしました。

futurismo.biz

nkfのインストールのためにmakeをインストールする

Cygwinのセットアップファイルを起動して、makeをインストールしました。すると今度はmakeコマンドは上手くいくけれど、make installを実行したところで、ccコマンドでエラーが発生!

ccコマンドもインストールされていないみたいです。なんとまあ先が長い。ということでccコマンドのGNU版であるgccコマンドをインストールすることにしました。

make installの実行のためにgcc-coreとgcc-g++をインストールする

gccもパッケージがいろいろあって、わかりにくいのですが、以下のサイト等を参考にgcc-coreとgcc-g++をインストールするだけでOKでした。ちなみにapt-cygは入れてません(笑)

64bit版Cygwinをインストールしてapt-cygするまで - DQNEO起業日記

nkfをインストールする

そろそろ上手く行くだろうと思いましたが、ここでも別のエラーが発生。Permissionの問題だったので、管理者権限でCygwinターミナル起動したところ、やっとのことでnkfコマンドがインストールされました!

手順のまとめ

試行錯誤して順番があちこちに飛びましたので、まとめました。

  1. Cygwinインストール
  2. パッケージの選択で、make, gcc-core, gcc-g++を追加で選択する。
  3. nkfコマンドをダウンロード後に解凍して、makeしてからmake installする

nkfを使用して文字化けを解消する

既に紹介したサイトの通り、以下のコマンドを実行することで、文字化けを解消することが出来ます。

コマンド

$ tail -f ログファイル名 | nkf -u -S -w

このコマンドをaliasに指定すれば良いと思いきや、このコマンドは引数を受け取ります。aliasには引数を設定する方法が無いんですね。

そのため、functionを使用します。以下のサイトを参考にしました。余談ですが、bashの設定で、functionを使うのは初めてです。

function tailf(){
  tail -f $1 | nkf -u -S -w
}

まぁるいしっぽ:bashで引数付きalias

上記を設定後に以下のようにコマンドを実行すると無事、共有サーバー上のShift_JISで書かれたログファイルをCygwinターミナル上でtail -f 出来るようになりました。

$ tailf ログファイル名

使用環境

クライアント:Windows 8.1 Pro 64bit

Cygwin 2.870

nkf 2.1.3