When does /tmp get cleared?
Solution 1
That depends on your distribution. On some system, it's deleted only when booted, others have cronjobs running deleting items older than n hours.
- On Ubuntu 14: using
tmpreaper
which gets called by/etc/cron.daily
, configured via/etc/default/rcS
and/etc/tmpreaper.conf
. (Credits to this answer). - On Ubuntu 16: using
tmpfiles.d
. (Credits to this answer). - On other Debian-like systems: on boot (the rules are defined in
/etc/default/rcS
). - On RedHat-like systems: by age (RHEL6 it was
/etc/cron.daily/tmpwatch
; RHEL7/RHEL8 and RedHat-like with systemd it's configured in/usr/lib/tmpfiles.d/tmp.conf
, called bysystemd-tmpfiles-clean.service
). - On Gentoo
/etc/conf.d/bootmisc
.
Solution 2
On CentOS (and I assume Fedora), there's a job in /etc/cron.daily called tmpwatch
. This runs /usr/sbin/tmpwatch
, which will delete files that haven't been accessed in the specified number of hours, i.e., the default behavior is to examine the atime
for the file to evaluate if it's been used recently.
http://linux.die.net/man/8/tmpwatch
Other distros (and installations) may have /tmp mounted as tmpfs, which is an in-memory filesystem. This will get cleared on boot.
Solution 3
On Ubuntu 11.10 which I'm using, there's an upstart script in /etc/init/mounted-tmp.conf
. The start of it says this:
# mounted-tmp - Clean /tmp directory
#
# Cleans up the /tmp directory when it does not exist as a temporary
# filesystem.
description "Clean /tmp directory"
start on (mounted MOUNTPOINT=/tmp) or (mounted MOUNTPOINT=/usr)
You can read in more details, however in general /tmp
is cleaned when it's either mounted or /usr
is mounted. This regularly happens on boot, so this /tmp
cleaning runs on every boot.
In /etc/default/rcS
you have TMPTIME
set, which is used in the above init script to feed the two find
commands at its end - basically controlling file deletion based on their times (modified, changed, accessed).
Solution 4
From Fedora 18 on, /tmp
is mounted on tmpfs
(i.e. RAM) by default, and thus erased on power off.
This behaviour can be disabled by issuing systemctl mask tmp.mount
and reboot (and reenabled by issuing systemctl unmask tmp.mount
and reboot), and then /tmp
will be mounted on the /
filesystem and can be controlled by /usr/lib/tmpfiles.d/tmp.conf
settings.
See http://fedoraproject.org/wiki/Features/tmp-on-tmpfs and man tmpfiles.d
for more details on each case.
Solution 5
On RHEL 6.2 the files in /tmp are deleted by tmpwatch if they have not been accessed in 10 days.
The file /etc/cron.daily/tmpwatch defines the way tmpwatch is called.
#! /bin/sh
flags=-umc
/usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \
-x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \
-X '/tmp/hsperfdata_*' 10d /tmp
The -x arguments are files to be excluded. The 2nd to last argument is the time to wait after the last accessed time. The last argument is the directory to examine.
Related videos on Youtube
John Lawrence Aspden
Updated on September 18, 2022Comments
-
John Lawrence Aspden over 1 year
I'm taking to putting various files in
/tmp
, and I wondered about the rules on deleting them?I'm imagining it's different for different distributions, and I'm particularly interested in Ubuntu and Fedora desktop versions.
But a nice general way of finding out would be a great thing.
Even better would be a nice general way of controlling it! (Something like 'every day at 3 in the morning, delete any
/tmp
files older than 60 days, but don't clear the directory on reboot')-
Ciro Santilli Путлер Капут 六四事 about 5 yearsRelated: askubuntu.com/questions/20783/…
-
-
adaptr about 12 yearsAnd regardless of when this happens, the only safe moment is generally on boot, right after mounting it, since running processes may have files locked there, and these should not be deleted.
-
Samuel Edwin Ward about 12 yearsThere are also packages available that can remove them periodically.
-
Franklin Piat about 9 yearsOn RedHat-like systems with systemd (centos7/rhel7), it's configured in /usr/lib/tmpfiles.d/tmp.conf. It's called by systemd's target
systemd-tmpfiles-clean.service
. -
Věroš K. over 6 yearsOn legacy Debian, you can consider
tmpreaper
package, it's forked version oftmpwatch
. -
Kevin Lemaire about 6 yearsI don't have this on CentOS 7.4.
-
cjc about 6 years@KevinLemaire The functionality was moved into a systemd service. lists.centos.org/pipermail/centos/2014-October/147155.html
-
Ng Sek Long over 5 yearsIf you didn't find the tmpwatch file, you can download tmpwatch by using
yum install tmpwatch
-
Jonathan almost 5 yearsCan I get tmpwatch on other distros? Sounds amazing. I'm on debian based distro
-
Jonathan almost 5 years
sudo find /tmp -type f -atime +10 -delete
will delete tmp files that haven't been accessed in 10 days, use with care -
Boris Verkhovskiy over 4 yearsUbuntu 19.04:
cat: /etc/default/rcS: No such file or directory
-
bernard paulus almost 4 years@Boris : answer is out-dated for ubuntu, see this answer on askubuntu
-
MAndru almost 3 yearswhat about the alpine distribution, when it will clean the temp files.