How is the /tmp directory cleaned up? Is it automatic? If so, how frequently is it cleaned up?

link|improve this question

68% accept rate
1  
My temporary files never get written to the disk. They get written to a RAM disk. I did put tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0 in /etc/fstab. – Anonymous Nov 16 '11 at 23:43
feedback

5 Answers

up vote 23 down vote accepted

The directory is cleared by default at every boot, because TMPTIME is 0 by default.

Here you can change the time in the following file:

/etc/default/rcS

TMPTIME says how frequent the tmp dir sould be cleared in days

link|improve this answer
Clearing at every boot is not ideal for a machine that is never rebooted, like a server. I've got over 500,000 files taking 5Gb space in my /tmp because my server has 378 days uptime. I'm reluctant to reboot it, simply because clearing those files on reboot make take hours. – rjmunro Jan 25 at 11:47
feedback

While the /tmp folder is not a place to store files long-term, occasionally you want to keep things a little longer than the next time you reboot, which is the default on Ubuntu systems. I know a time or two I’ve downloaded something to /tmp during testing, rebooted after making changes and then lost the original data again. This can be changed if you’d like to keep your /tmp files a little bit longer.

Changing the /tmp Cleanup Frequency

The default setting that tells your system to clear /tmp at reboot is held in the /etc/default/rcS file. The value we’ll look at is TMPTIME.

The current value of TMPTIME=0 says delete files at reboot despite the age of the file. Changing this value to a different (positive) number will change the number of days a file can survive in /tmp.

TMPTIME=7

This setting would allow files to stay in /tmp until they are a week old, and then delete them on the next reboot. A negative number (TMPTIME=-1) tells the system to never delete anything in /tmp. This is probably not something you want, but is available.

link|improve this answer
good explanation. But in which script is the cleanup command? I have seen /etc/init/mounted-temp.conf, but it has the line start on mounted MOUNTPOINT=/tmp that make me think it is non applicable. – enzotib Jan 9 '11 at 19:56
If you don't want a file to be removed automatically, put it in /var/tmp instead of /tmp. – Gilles Jan 10 '11 at 21:29
feedback

It is cleaned up every time you reboot.

link|improve this answer
feedback

the cleaning is done by the upstart script /etc/init/mounted-tmp.conf. the script is run by upstart everytime /tmp is mounted.

the parameter controlling the script is TMPTIME located in /etc/default/rcS. if a file in /tmp is older than TMPTIME days, it will get deleted.

link|improve this answer
feedback

On one of our servers running Ubuntu, we have a script to remove files in /tmp and it runs nightly.

The script is:

#!/bin/sh
# Clean file and dirs more than 3 days old in /tmp nightly

/usr/bin/find /tmp -type f -atime +2 -mtime +2  |xargs  /bin/rm -f &&

/usr/bin/find /tmp -type d -mtime +2 -exec /bin/rm -rf '{}' \; &&

/usr/bin/find /tmp -type l -ctime +2 |xargs /bin/rm -f &&

/usr/bin/find -L /tmp -mtime +2 -print -exec rm -f {} \;

Just save the contents above to a file chmod 775 the file and create a cron entry to run it. Since this is a web server we don't want to reboot it for obvious reasons.

link|improve this answer
You might be better off using tmpwatch. – poolie Sep 28 '11 at 4:59
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.