共有サーバー上のログファイルを tail -f したい。
せっかく、Windows上でログファイルを出力できるようになったので、tail -fでログの監視もしたいと思ったので調べました。
PowerShellを使用すれば、tail -fとほぼ同じことが出来るようですが、別件でCygwinがインストール済みだったので、Cygwinを使ってみました。
Cygwinのインストール
今回はインストール済みなので、飛ばしますがインストールは以下のサイトを参考にしたり適当にググれば良いと思います。Windows 8.1でも変わりません。
パッケージについては覚えていません(笑)。たぶんデフォルトだったような気がします。
共有サーバーへのアクセス
共有サーバーへのアクセスは簡単でした。以下のサイトの通りです。
$ cd //IPアドレス/ディレクトリ名
とするだけです。
ログファイルがShift_JISのため、tail コマンドで文字化け発生
これでCygwinのターミナル上から、tail -fを実行出来れば問題なかったのですが。見出しの通り、文字コードがShift_JISのため、文字化けが発生してしまいました。
以下のサイトによると、nkfをインストールすれば良さそうなので、インストールすることにしました。
ここから色々と書いていますが、最後のほうに手順をまとめましたので、急いでいる方はそちらを参照してください。
「quantum fluctuation: tail の出力が cygwin と eshell で文字化けした時の対処法」
nkfをインストールする
nkfのインストールには、以下のサイトを参考にしました。だがしかし、makeコマンドの実行でエラーが発生!
makeコマンドがインストールされていないようです。そのため、先にmakeコマンドをインストールすることにしました。
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コマンドがインストールされました!
手順のまとめ
試行錯誤して順番があちこちに飛びましたので、まとめました。
nkfを使用して文字化けを解消する
既に紹介したサイトの通り、以下のコマンドを実行することで、文字化けを解消することが出来ます。
コマンド
$ tail -f ログファイル名 | nkf -u -S -w
このコマンドをaliasに指定すれば良いと思いきや、このコマンドは引数を受け取ります。aliasには引数を設定する方法が無いんですね。
そのため、functionを使用します。以下のサイトを参考にしました。余談ですが、bashの設定で、functionを使うのは初めてです。
function tailf(){ tail -f $1 | nkf -u -S -w }
上記を設定後に以下のようにコマンドを実行すると無事、共有サーバー上のShift_JISで書かれたログファイルをCygwinターミナル上でtail -f 出来るようになりました。
$ tailf ログファイル名
使用環境
クライアント:Windows 8.1 Pro 64bit
Cygwin 2.870
nkf 2.1.3