RHEL9  logrotate.timer OnCalendar logrotateログファイルを定期にローテーションする方法

環境
# cat/etc/redhat-release
Red Hat Enterprise Linux release 9.2 (Plow)

概要
onCalendar定期的書式

minutely *-*-* *:*:00 毎分
hourly *-*-* *:00:00 毎時
daily *-*-* 00:00:00 日次
monthly *-*-01 00:00:00 月次
weekly Mon *-*-* 00:00:00 週次
yearly *-01-01 00:00:00 年次
quarterly *-01,04,07,10-01 00:00:00 四半期ごと
semiannually *-01,07-01 00:00:00 半期ごと

設定方法
1.デフォルトのunitファイルを確認します。

# ls -lrt /usr/lib/systemd/system/ | grep logrotate
-rw-r--r--. 1 root root 191 10月 14 2019 logrotate.timer
-rw-r--r--. 1 root root 870 8月 21 2020 logrotate.service

2.logrotate.timerを確認します

# cat /usr/lib/systemd/system/logrotate.timer
[Unit]
Description=Daily rotation of log files
Documentation=man:logrotate(8) man:logrotate.conf(5)

[Timer]
OnCalendar=daily
AccuracySec=1h
Persistent=true

[Install]
WantedBy=timers.target

3.logrotate.serviceの内容を確認します

# cat /usr/lib/systemd/system/logrotate.timer

[Unit]
Description=Daily rotation of log files
Documentation=man:logrotate(8) man:logrotate.conf(5)

[Timer]
OnCalendar=daily
AccuracySec=1h
Persistent=true

[Install]
WantedBy=timers.target
[root@localhost ~]# cat /usr/lib/systemd/system/logrotate.service
[Unit]
Description=Rotate log files
Documentation=man:logrotate(8) man:logrotate.conf(5)
RequiresMountsFor=/var/log
ConditionACPower=true

[Service]
Type=oneshot
ExecStart=/usr/sbin/logrotate /etc/logrotate.conf

# performance options
Nice=19
IOSchedulingClass=best-effort
IOSchedulingPriority=7

# hardening options
#  details: https://www.freedesktop.org/software/systemd/man/systemd.exec.html
#  no ProtectHome for userdir logs
#  no PrivateNetwork for mail deliviery
#  no NoNewPrivileges for third party rotate scripts
#  no RestrictSUIDSGID for creating setgid directories
LockPersonality=true
MemoryDenyWriteExecute=true
PrivateDevices=true
PrivateTmp=true
ProtectClock=true
ProtectControlGroups=true
ProtectHostname=true
ProtectKernelLogs=true
ProtectKernelModules=true
ProtectKernelTunables=true
ProtectSystem=full
RestrictNamespaces=true
RestrictRealtime=true

4.OnCalendarのtimer 設定を変更します
例 OnCalendar=dailyをOnCalendar=weeklyに変更します。
変更方法

# cp -p /usr/lib/systemd/system/logrotate.timer /etc/systemd/system/
# cp -p /usr/lib/systemd/system/logrotate.service /etc/systemd/system/
# sed -i s/OnCalendar=daily/OnCalendar=weekly/ /etc/systemd/system/logrotate.timer

設定ファイルを反映する
# systemctl daemon-reload

サービスを再起動
# systemctl restart logrotate.service

RHEL9

Posted by arkgame