スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

古いログを削除するスクリプト

サーバで溜まっているログを削除するスクリプトをrubyで書きました。以前はbashでpostgresqlとapacheを別々に書いた記事もありますが、ログファイルの先頭がYYYYMMDDであるという規約にしてどこでも使えるようにしてみました。

#!/bin/env ruby
# coding:utf-8

require 'date'

def make_path(dir, file)
if dir =~ /\/$/
return dir + file
else
return dir + '/' +file
end
end

def make_target(days)
ymd = Date.today
ymd = ymd - days.to_i
return ymd.strftime('%Y%m%d').to_i
end

def each_file(dir, days)
target = make_target(days)
Dir::foreach(dir).each do |file|
if /^(\d{8})/ =~ file
if target >= $1.to_i
yield(make_path(dir, file))
end
end
end
end

if ARGV.size < 2
puts "delete_log dir days"
exit
end

each_file(ARGV[0], ARGV[1]) do |file|
#p file
File.delete(file)
end


最初の引数がディレクトリの位置で、二番目の引数が何日前のログを消すかの指定です。
例えば、/tmp/logsの中のログを30日間分保存して残りを消したい場合以下のように呼び出します。
ruby delete_log.rb /tmp/logs 30
スポンサーサイト

COMMENTS

COMMENT FORM

TRACKBACK


この記事にトラックバックする(FC2ブログユーザー)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。