読者です 読者をやめる 読者になる 読者になる

学習履歴

プログラミングなどの学習履歴

ログローテーション

ログローテーションについてのメモです。

意味はログが無限に増えることを防ぐために、
一定量もしくは期間ごとに古いログを削除した分を新しいログで上書きしていくことです。
コード例は以下です。

関数名 5000 5 ログファイル名
5000の箇所はファイルサイズで5はループ回数にあたります

関数名(){
if[! -e $3]; then
touch $3
fi

if[ -n "`find $3 -size +${1}c`"]; then
for i in `seq 1 $*1 | sort -r`; do
mv "$3.$i" "$3.$*2" > /dev/null 2>&1
done
cp "$3" "$3.1" > /dev/null 2>&1
cp /dev/null "$3" > /dev/null 2>&1
fi
}

$3・・3番目の引数のこと。$1なら1番目の引数のこと。
touch・・ファイル作成

  • n・・文字列長が0より大きいならtrue
  • size・・findコマンドと使うことが多く、意味は指定されたサイズより大きいファイルを探す

     例えばfind -size +100cだと100バイトより大きいファイルを探す
``・・このバッククオテーションで囲まれたコマンドがある場合、対象のコマンドを実行した結果が返される
seq・・例としてseq 1 10は1から10までループさせる。for文と併用
sort -r・・降順に並べる
/dev/null 2>&1・・/dev/nullはゴミ箱を意味する。2>&1は2(エラー出力)を1(標準出力)にまとめるという意味。
cp・・コピー
mv・・移動させる

上記のコマンドの意味を照らし合わせながらコードの意味を理解するのに
役立てていただければ幸いです。

*1:$2 - 1

*2:$i + 1