こんにちはますのです。Linuxのコマンド備忘録になります。
ログ上から特定のキーワードを拾い上げて、発生頻度とかを調べたい時があると思います。
今までの筆者であれば、grepでログデータから特定のキーワードを抽出、WinSCPでデータを移動、TeraPadやサクラエディタで確認…。ということをやっていたでしょう。
もしくはviエディタで行数確認などなど。どちらにしてもスマートではないのであります。
今回とある記事を見て使えそうなことがあるかもしれないと思い備忘録で残しておこうと思います。
ちなみに参考記事は、情報収集しようと買ってみたこちらの書籍より。
意外とインフラのことも多く載っているのでkindleで過去分も買ってみたのです。
wcコマンド:ファイル数やテキストの行数などをカウントする
今回はこのブログのアクセスログの生データを引っ張り出してきて試してみました。
「行数」「単語数」「バイト数」が表示できることが確認できました。
$ wc sample.log
31825 709806 9167565 sample.log
行数 単語数 バイト数 対象ファイル名
オプションで指定して、それぞれの値のみを出力することも出来るようです。
オプション | オプション(長い表示) | 意味 |
---|---|---|
-l | –lines | 行数の表示 |
-w | –words | 単語数の表示 |
-c | –bytes | バイト数の表示 |
-m | –chars | 実行時言語での文字数の表示(日本語のようなマルチバイト文字にも対応) |
活用1:格納されているファイルやフォルダ数を抽出する(ls + wc)
wcの活用方法ひとつめですが、指定したフォルダ内にどのくらいのファイルがあるかを確認したい際に利用できます。
2つデータが保存されているホームディレクトリで試してみました。
$ ls -l
合計 8956
drwxr-xr-x 5 root root 113 3月 8 2020 centos-test
-rw-rw-r-- 1 test test 9167565 12月 4 05:04 sample.log
$ ls | wc
2 2 50
パイプ「|」でちゃんと引き渡してくれますね。
ただ、この内容だとファイル数とフォルダ数が一緒にカウントされちゃうのでgrepを使って一工夫します。
対象は「/etc」内のlsコマンド結果で試してみます。
$ ls | wc ※/etc内のフォルダ&ファイル数を確認
189 189 1781
【ファイル数のカウント】
ls -F | grep -v "/" | wc
106 106 1094
【フォルダ数のカウント】
$ ls -F | grep "/" | wc
83 83 785
しっかりとカウント出来てますね。
そこからgrepで”/”が含まれるかどうかを判別している設定となります。ちなみに「ls- 1F」とすれば改行された形で出力も可能なので生計が必要な場合はこちらもオススメです。
活用2:logデータ内の指定キーワードの行数をカウントする
続いてlogデータの確認になります。
筆者の利用したケースでいうと、「プロキシサーバのログ上でzoomやgoogleのURLがどのくらいアクセスされているか確認」という時ですね。
障害対応や設定切り替え時に、想定通りの動きをしているかをログから確認することがあります。
その際に指定したURLがどのくらいログ上に記録されているかを調べるときに重宝します。
$ wc -l sample.log
31825 sample.log
$ grep google.com ./sample.log | wc -l
1065
31825行あるうち、1065行に「google.com」が含まれているよというのが分かりました。
CLIで操作できるとlogデータからの件数抽出はとても簡単ですね。
以上、運用管理者やログ調査等に重宝しそうなコマンドの紹介でした。
このあたりは全然知らなかったので情報収集で書籍を定期購読してみるのは良いことだなと感じましたのです。ネットだけだと自分の興味あるものや困っているものだけに偏ってしまうので、こんなのもあるよ!っていう情報は業界紙が一番良いですね。
個人的にはこちらの認証認可の号はもう少し咀嚼したいと思っている所存であります。