Řešení 1:
To záleží na vaší distribuci. Na některých systémech se smaže pouze při spuštění, u jiných běží cronjob s mazáním položek starších než n hodin.
- Na Ubuntu 14:pomocí
tmpreaper
který je volán/etc/cron.daily
, nakonfigurovaný pomocí/etc/default/rcS
a/etc/tmpreaper.conf
. (Poděkování za tuto odpověď). - Na Ubuntu 16:pomocí
tmpfiles.d
. (Poděkování za tuto odpověď). - Na jiných systémech podobných Debianu:při startu (pravidla jsou definována v
/etc/default/rcS
). - Na systémech typu RedHat:podle věku (RHEL6 to bylo
/etc/cron.daily/tmpwatch
; RHEL7/RHEL8 a podobný RedHat se systemd je nakonfigurován v/usr/lib/tmpfiles.d/tmp.conf
, volánosystemd-tmpfiles-clean.service
). - Na Gentoo
/etc/conf.d/bootmisc
.
Řešení 2:
Na CentOS (a předpokládám, že Fedora) je v /etc/cron.daily úloha s názvem tmpwatch
. Toto spustí /usr/sbin/tmpwatch
, která smaže soubory, ke kterým se během zadaného počtu hodin nepřistoupilo, tj. výchozí chování je prozkoumat atime
aby soubor vyhodnotil, zda byl nedávno použit.
http://linux.die.net/man/8/tmpwatch
Ostatní distribuce (a instalace) mohou mít /tmp připojeno jako tmpfs, což je souborový systém v paměti. Toto bude vymazáno při spouštění.
Řešení 3:
Na Ubuntu 11.10, které používám, je v /etc/init/mounted-tmp.conf
počáteční skript . Začátek říká toto:
# 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)
Můžete si přečíst více podrobností, ale obecně /tmp
je vyčištěn, když je připojen, nebo /usr
je namontován. To se pravidelně stává při bootování, takže toto /tmp
čištění probíhá při každém spuštění.
V /etc/default/rcS
máte TMPTIME
set, který se používá ve výše uvedeném init skriptu k naplnění dvou find
příkazy na konci – v podstatě řídí mazání souborů na základě jejich času (upraveno, změněno, zpřístupněno).
Řešení 4:
Od Fedory 18 dále, /tmp
je namontován na tmpfs
(tj. RAM) ve výchozím nastavení, a proto se při vypnutí vymaže.
Toto chování lze zakázat vydáním systemctl mask tmp.mount
a restartujte (a znovu povolte vydáním systemctl unmask tmp.mount
a restartujte počítač) a poté /tmp
bude namontován na /
souborový systém a lze jej ovládat pomocí /usr/lib/tmpfiles.d/tmp.conf
nastavení.
Viz http://fedoraproject.org/wiki/Features/tmp-on-tmpfs a man tmpfiles.d
pro více podrobností o každém případě.
Řešení 5:
Na RHEL 6.2 jsou soubory v /tmp odstraněny pomocí tmpwatch, pokud nebyly zpřístupněny po dobu 10 dnů.
Soubor /etc/cron.daily/tmpwatch definuje způsob, jakým se tmpwatch nazývá.
#! /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
Argumenty -x jsou soubory, které mají být vyloučeny. Argument 2. až poslední je doba čekání po době posledního přístupu. Posledním argumentem je adresář, který se má prozkoumat.