logrotate | Linux
logrotatge
logrotate は Cron によって実行されます。
よって /etc/logrotate.d の設定ファイルを変更しても logrotate の再起動は必要ありません(できません)。
/etc/cron.daily/logrotat が実行ファイルになります。
/etc/cron.daily, /etc/cron.hourly, /etc/cron.monthly, /etc/cron.weekly 配下の実行時間は /etc/crontab に記載されています。
Ref.
https://qiita.com/zom/items/c72c7bac63462225971b
Cron が動作していることを確認
$ sudo systemctl status cron.service
● cron.service - Regular background program processing daemon
Loaded: loaded (/lib/systemd/system/cron.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2023-09-12 13:11:02 JST; 10min ago
Docs: man:cron(8)
Main PID: 360 (cron)
Tasks: 1 (limit: 1091)
Memory: 476.0K
CPU: 14ms
CGroup: /system.slice/cron.service
└─360 /usr/sbin/cron -f -P
Sep 12 13:11:02 ip-10-19-0-19 systemd[1]: Started Regular background program processing daemon.
Sep 12 13:11:02 ip-10-19-0-19 cron[360]: (CRON) INFO (pidfile fd = 3)
Sep 12 13:11:02 ip-10-19-0-19 cron[360]: (CRON) INFO (Running @reboot jobs)
Sep 12 13:17:01 ip-10-19-0-19 CRON[1594]: pam_unix(cron:session): session opened for user root(uid=0) by (uid=0)
Sep 12 13:17:01 ip-10-19-0-19 CRON[1595]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Sep 12 13:17:01 ip-10-19-0-19 CRON[1594]: pam_unix(cron:session): session closed for user root
logrotate をインストール
インストール済みの場合も多いので確認。
インストール済みだった。
apt list --installed | grep logrotate
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
logrotate/jammy-updates,jammy-security,now 3.19.0-1ubuntu1.1 amd64 [installed]
設定ファイル
/etc/logrotate.d に設定ファイルを作成します。
例として dump という名前で作成します。
# /etc/logrotate.d/dump
/opt/backup/mysql/*.sql {
daily
missingok
rotate 7
compress
delaycompress
create 644 root root
postrotate
mysqldump -uexample -ppassword example --single-transaction > /opt/backup/mysql/mysql.sql || true
endscript
}
dry run を実行
logrotate コマンド配下に配置されています。
$ which logrotate
/usr/sbin/logrotate
d オプション または v (推奨)オプションで dry run を実行します。
$ sudo /usr/sbin/logrotate -v /etc/logrotate.d/dump
強制的に実行
任意のタイミングで実行したい場合は f オプションを付与します。
$ sudo /usr/sbin/logrotate -f /etc/logrotate.d/dump
重要
postscript はローテーション実施後に発行されます。
ローテーションがされない場合は実行されません。
logrotate でローテーションする際はログが存在することが前提となります。
logrotate は対象ログがないとローテーションしません(なにもしない)。
よって今回の例では、内容はなんでもよいので /opt/backup/mysql/mysql.sql を手動で作成する必要があります。