LoginSignup
4
4

More than 5 years have passed since last update.

splitコマンドでとりあえずログファイルを分割

Posted at

きっかけ

ローテーションを設定していなかったアプリのログを、一部の期間に限って提出する必要が出てきました。
気がつくと、サイズは51MB, 5万行くらいになっています。

Apacheのログのように1行ごとに日付が入っていない、railsのproduction.logログだったので、指定期間の分だけどうやって抽出するのか悩みました…。

splitコマンドを使おう

連結にはcatを使うのは知っていましたが、分割用のコマンドは知りませんでした…。

分割の単位は、行数やバイト数が指定できるそうです。
また、分割されたファイル名には、アルファベットの連番の拡張子がくっつくそうです。

やってみたところ…

# ls -sh production.log
51M production.log

# split -l 1000 production.log production.log.
# ls
production.log     production.log.ca  production.log.eb  production.log.gc  production.log.id  production.log.ke  production.log.mf  production.log.og  
# … 以下略

たくさんできました。

疑ってかかっているので確かめる

できたファイルが本当に1000行単位なのか、確かめてみます。

# for FILE in `ls production.log.*`; do wc -l $FILE; done

1000 production.log.aa
1000 production.log.ab
1000 production.log.ac

# 途中略…

1000 production.log.vu
1000 production.log.vv
1000 production.log.vw
1000 production.log.vx
1000 production.log.vy
1000 production.log.vz
814 production.log.wa

大丈夫のようです。

肝心の、『x月x日から、x月x日まで』というあたりは、grepでStartを含むファイル、Endを含むファイルを見つけて、その間のファイルを提出という、あまり上手くない方法となりました…。

サーバ/インフラエンジニアの皆さんは、この辺りのテクニックは駆使していらっしゃることと思いますが、とりあえずsplitを覚えて、『どうしよう?』な少し心配事が減った次第です。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4