Score:1

Logrotate is not working in /tmp

cn flag

I'm facing a strange problem with logrotate on my Debian 10 server.

All in one, logrotate (v3.20.1) is working and rotating fine... except for some files in /tmp that I want to "skrink" every day. Thoses logs are cvs files from collectd that I don't need to keep more than 24h.

My collectd configuration file is :

/var/log/collectd/collectd.log {
        weekly
        rotate 4
        create
        compress
        missingok
}

/tmp/collectd/csv/localhost/*/* {
        daily
        rotate 0
        copytruncate
        missingok
}

Here is a part of the logrotate log file :

rotating pattern: /var/log/collectd/collectd.log  weekly (4 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/collectd/collectd.log
  Now: 2022-12-09 00:00
  Last rotated at 2022-12-04 15:15
  log does not need rotating (log has been rotated at 2022-12-04 15:15, which is less than a week ago)

rotating pattern: /tmp/collectd/csv/localhost/*/*  after 1 days (no old logs will be kept)
empty log files are rotated
considering log /tmp/collectd/csv/localhost/*/*

The strange thing I can notice is in logrotate status file /var/lib/logrotate/status where the status date is stuck at 2022-12-1-0:0:0 for those files unlike the other entries.

# cat /var/lib/logrotate/status | sort
logrotate state -- version 2
"/tmp/collectd/csv/localhost/*/*" 2022-12-1-0:0:0
"/tmp/collectd/csv/localhost/cpu-0/cpu-idle" 2022-12-1-0:0:0
"/tmp/collectd/csv/localhost/cpu-0/cpu-interrupt" 2022-12-1-0:0:0
"/tmp/collectd/csv/localhost/cpu-0/cpu-nice" 2022-12-1-0:0:0
"/tmp/collectd/csv/localhost/cpu-0/cpu-softirq" 2022-12-1-0:0:0
...
"/tmp/collectd/csv/localhost/tcpconns-4772-remote/tcp_connections-SYN_SENT" 2022-12-1-0:0:0
"/tmp/collectd/csv/localhost/tcpconns-4772-remote/tcp_connections-TIME_WAIT" 2022-12-1-0:0:0
"/tmp/collectd/csv/localhost/uptime/uptime" 2022-12-1-0:0:0
...
"/var/log/borgbackup.log" 2022-12-4-15:15:18
"/var/log/btmp" 2022-12-1-0:0:1
"/var/log/chrony/*.log" 2022-1-13-18:0:0
"/var/log/clamav/clamav.log" 2022-12-4-15:15:18
"/var/log/clamav/freshclam.log" 2022-12-4-15:15:18
"/var/log/collectd/collectd.log" 2022-12-4-15:15:18

I have tried to run logrotate in debug mode and here is the result :

...
rotating pattern: /tmp/collectd/csv/localhost/*/*  after 1 days (no old logs will be kept)
empty log files are rotated
considering log /tmp/collectd/csv/localhost/cpu-0/cpu-idle
  Now: 2022-12-09 17:32
  Last rotated at 2022-12-01 00:00
  log needs rotating
...
rotating log /tmp/collectd/csv/localhost/cpu-0/cpu-idle, log->rotateCount is 0
dateext suffix '-20221209'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
renaming /tmp/collectd/csv/localhost/cpu-0/cpu-idle.1.bz2 to /tmp/collectd/csv/localhost/cpu-0/cpu-idle.2.bz2 (rotatecount 1, logstart 1, i 1),
renaming /tmp/collectd/csv/localhost/cpu-0/cpu-idle.0.bz2 to /tmp/collectd/csv/localhost/cpu-0/cpu-idle.1.bz2 (rotatecount 1, logstart 1, i 0),
log /tmp/collectd/csv/localhost/cpu-0/cpu-idle.2.bz2 doesn't exist -- won't try to dispose of it
skip copying /tmp/collectd/csv/localhost/cpu-0/cpu-idle to /tmp/collectd/csv/localhost/cpu-0/cpu-idle.1
truncating /tmp/collectd/csv/localhost/cpu-0/cpu-idle
compressing log with: /bin/lbzip2
...

But the file is not rotated at midnight every day and keep growing :(

Is it possible to rotate a file in /tmp ? It seems that it's possible but what could be the problem ?

Thanks for your help.

Score:0
kw flag

You need to check /lib/systemd/system/logrotate.service config and make sure PrivateTmp option is set to false.

Do not forget systemctl daemon-reload

I just found out for myself that Logrotate is handled not by Cron but Systemd timer. Discovery of the year!

cn flag
Hi, I've just noticed that a few days ago. I'm going to try your setting today as it is set to true at the moment.
Score:0
cn flag

Here is my systemd conf file for logrotate service.

# cat logrotate.service
[Unit]
Description=Rotate log files
Documentation=man:logrotate(8) man:logrotate.conf(5)
ConditionACPower=true

[Service]
Type=oneshot
ExecStart=/usr/sbin/logrotate -v --log=/var/log/logrotate/logrotate.log /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 ProtectKernelTunables for working SELinux with systemd older than 235
#  no MemoryDenyWriteExecute for gzip on i686
PrivateDevices=true
PrivateTmp=false
ProtectControlGroups=true
ProtectKernelModules=true
ProtectSystem=full
RestrictRealtime=true
I sit in a Tesla and translated this thread with Ai:

mangohost

Post an answer

Most people don’t grasp that asking a lot of questions unlocks learning and improves interpersonal bonding. In Alison’s studies, for example, though people could accurately recall how many questions had been asked in their conversations, they didn’t intuit the link between questions and liking. Across four studies, in which participants were engaged in conversations themselves or read transcripts of others’ conversations, people tended not to realize that question asking would influence—or had influenced—the level of amity between the conversationalists.