0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RHEL9のlogrotate

Posted at

Red Hat Enterprise Linux 9(CentOS 9)のlogrotateは、cronではなくsystemd-timerで起動している。

# 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
オプション 説明
Description Unitの説明文
Documentation ドキュメントのURI
ConditionACPower
Type
ExecStart
Nice
IOSchedulingClass
IOSchedulingPriority
LockPersonality
MemoryDenyWriteExecute
PrivateDevices
PrivateTmp
ProtectClock
ProtectControlGroups
ProtectHostname
ProtectKernelLogs
ProtectKernelModules
ProtectKernelTunables
ProtectSystem
RestrictNamespaces
RestrictRealtime
# 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
オプション 説明
Description Unitの説明文
Documentation ドキュメントのURI
OnCalendar 実行するタイミング
AccuracySec 実行タイミングの精度。OnCalendarの設定時刻からこの時間以内に実行される。小さくすればするほどCPU負荷が高くなる。
Persistent "true"に設定すると、指定したタイミングで実行されなかった場合に、システム再起動後に時間外でも実行する
WantedBy enable設定時に前提とするUnit。このUnitの.wantsディレクトリにリンクを作成する。

systemd-timerで起動しているサービス

# systemctl list-timers
NEXT                        LEFT          LAST                        PASSED    UNIT                         ACTIVATES
Fri 2024-09-27 20:12:24 JST 43min left    Fri 2024-09-27 19:05:49 JST 23min ago dnf-makecache.timer          dnf-makecache.service
Sat 2024-09-28 00:00:00 JST 4h 30min left Fri 2024-09-27 00:00:01 JST 19h ago   logrotate.timer              logrotate.service
Sat 2024-09-28 00:00:00 JST 4h 30min left Fri 2024-09-27 00:00:01 JST 19h ago   mlocate-updatedb.timer       mlocate-updatedb.service
Sat 2024-09-28 12:01:16 JST 16h left      Fri 2024-09-27 12:01:16 JST 7h ago    systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service

4 timers listed.
Pass --all to see loaded but inactive timers, too.

logrotate.serviceがsystemd-timerで動いているのは分かった。
で、weekly,monthly,yearlyっていつやねん

$ man logrotate
・・・
Frequency
       hourly Log  files  are  rotated  every  hour.   Note that usually logrotate is configured to be run by cron daily.  You have to change this configuration and run logrotate hourly to be able to  really  rotate logs hourly.

       daily  Log files are rotated every day.

       weekly [weekday]
              Log  files  are  rotated  once each weekday, or if the date is advanced by at least 7 days since the last rotation (while ignoring the exact time).  The weekday interpretation  is  following:  0  means Sunday, 1 means Monday, ..., 6 means Saturday; the special value 7 means each 7 days, irrespectively of weekday.  Defaults to 0 if the weekday argument is omitted.

       monthly
              Log files are rotated the first time logrotate is run in a month (this is normally on the first  day of the month).

       yearly Log files are rotated if the current year is not the same as the last rotation.

       size size
              Log  files are rotated only if they grow bigger than size bytes.  If size is followed by k, the size is assumed to be in kilobytes.  If the M is used, the size is in megabytes, and if G  is  used,  the size is in gigabytes. So size 100, size 100k, size 100M and size 100G are all valid.  This option is mutually exclusive with the time interval options, and it causes log files to be rotated without regard  for  the  last  rotation time, if specified after the time criteria (the last specified option takes the precedence).
オプション 説明
hourly 1時間ごとにローテーション。通常logrotateはcronによって1日に1回実行されるように設定されているので、logrotateを1時間ごとに実行するように設定変更する必要がある。
daily 毎日ローテーション。
weekly 指定した曜日に1回、または日付が前回から少なくとも7日進んだ場合 (正確な時間は無視) にローテーション。"0"は日曜日、"1"は月曜日、...、"6"は土曜日、"7"は曜日に関係なく7日ごと。引数が省略した場合は日曜日。
monthly ログ ファイルは、月に最初に logrotate が実行されたときにローテーションされます (通常は月の最初の日)。
yearly 現在の年が前回のローテーションと同じでない場合にのみローテーション。
size 指定サイズよりも大きくなった場合にのみローテーション。このオプションは時間間隔オプションと相互に排他的であり、時間基準の後に指定されている場合、ログ ファイルは前回のローテーション時間に関係なくローテーション (最後に指定されたオプションが優先される)。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?