logrotate

command

force execution

logrotate -f /etc/logrotate.conf

debug mode

logrotate -d /etc/logrotate.conf

pattern

  • example: /var/log/messages

1 シンプルな世代ローテート

sudo cat > /etc/logrotate2.conf <<'EOF'
/var/log/messages {
    rotate 7
    create 0640 root root
}
EOF

logrotate -f /etc/logrotate2.conf; ls -1 /var/log/messages*
# => /var/log/messages.1から7まで作られる。

2 日時をファイルに付ける。

sudo cat > /etc/logrotate2.conf <<'EOF'
/var/log/messages {
    rotate 7
    create 0640 root root


    dateext
    dateformat -%Y%m%d-%H%M%S
}
EOF

logrotate -f /etc/logrotate2.conf; ls -1 /var/log/messages*
# => /var/log/messages-YYYYmmdd-HHMMSSで作られる。

3 別フォルダにアーカイブしたい。

mkdir -p /var/log/archive

sudo cat > /etc/logrotate2.conf <<'EOF'
/var/log/messages {
    rotate 7
    create 0640 root root


    olddir /var/log/archive
}
EOF

logrotate -f /etc/logrotate2.conf; ls -1 /var/log/archive/messages*
# => /var/log/archive/messages.1-7が作られる。

4 回転?

sudo cat > /etc/logrotate2.conf <<'EOF'
/var/log/a {
    rotate 7
    create 0640 root root
}
EOF

for f in $(seq 7)
do
  echo $f > /var/log/a
  logrotate -f /etc/logrotate2.conf
done
# => ファイル名がリネームされている:回転している。
[root@localhost ~]# head /var/log/a.?
==> /var/log/a.1 <==
7

==> /var/log/a.2 <==
6

==> /var/log/a.3 <==
5

==> /var/log/a.4 <==
4

==> /var/log/a.5 <==
3

==> /var/log/a.6 <==
2

==> /var/log/a.7 <==
1
[root@localhost ~]#