Samoczyszczenie możesz spróbować wykonywać za pomocą crona
Ma to sens chyba tylko, gdy trzeba go opróżniać częściej niż co każde uruchamianie (edycja: trzeba by zrobić to tak, by cron nie usuwał plików wciąż potrzebnych). Jeśli nie, w /etc/default/rcS ustawiamy TMPTIME na 0 lub liczbę dni, po której katalog zostanie wyczyszczony przy najbliższym starcie. Tak przynajmniej można w debianopodobnych dystrybucjach, w tym w Ubuntu.
TMPTIME
On boot the files in /tmp will be deleted if their modification time is more than TMPTIME days ago. A value of 0 means that files are removed regardless of age. If you don't want the system to clean /tmp then set TMPTIME to a negative value (e.g., -1) or to the word infinite.
P.S. Przetestuj działanie na ukrytych plikach przy domyślnych ustawieniach basha (opcja dotglob wyłączona, zmienna GLOBIGNORE nieustawiona).
Można w rozwijaniu nazw wykluczyć następowanie drugiej kropki po pierwszej: dla testowania niech będzie na ls
Można ominąć sztuczki powłoki i użyć finda:
find /tmp -mindepth 1 -exec echo {} \\;
(zamiast echa dać rm z opcjami, gdy trzeba). Przy okazji, findem można wskazywać pliki zależnie od właściciela czy innych kryteriów, np czasu ostatniej zmiany.
Niektóre pliki w /tmp mogą być wciąż używane przez któryś z procesów.
@polis: nie słyszałeś o takich tworach jak interpunkcja i zdanie?
Przerzuć /tmp do pamięci RAM/Swap przez tmpfs, dokłądniej - montuj tmpfs w /tmp i będziesz miał /tmp czyszczony co restart systemu. Tak samo można zrobić z /var/log na przykład. Jeśli Cię to interesuje to do /etc/fstab dodaj:
tmpfs /dev/shm tmpfs defaults 0 0
tmpfs /tmp tmpfs defaults,mode=1777 0 0
tmpfs /var/log tmpfs defaults,mode=1777 0 0
Pozdrawiam!