Jak czyścić / tmp?

73
rizhas@rizhas-laptop:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda7        67G   58G  5,2G  92% /
none            4,0K     0  4,0K   0% /sys/fs/cgroup
udev            1,5G   12K  1,5G   1% /dev
tmpfs           303M  1,2M  302M   1% /run
none            5,0M     0  5,0M   0% /run/lock
none            1,5G  348K  1,5G   1% /run/shm
none            100M   80K  100M   1% /run/user
overflow        1,0M  1,0M     0 100% /tmp
overflow        1,0M  1,0M     0 100% /tmp

Jak posprzątać /tmp?

Ryż
źródło
1
Prawdopodobnie odpowiedział na Unix i Linux . Nie jestem pewien, czy to sprawia, że ​​to pytanie jest duplikatem.
drc
nie @drc, ale dobre znalezisko. Stamtąd użyłem linku, aby zaktualizować swoją odpowiedź.
Rinzwind,
1
Zobacz także Jak sprzątany jest katalog / tmp?
Martin Schröder,
Powiązane: unix.stackexchange.com/questions/11235/is-it-safe-to-rm-rf-tmp | superuser.com/questions/499039/…
Ciro Santilli 2 改造 中心 法轮功 六四 事件

Odpowiedzi:

116

/ tmp powinien zostać wyczyszczony przy ponownym uruchomieniu, ale jeśli nie uruchomisz ponownie (co jest normalne dla serwerów), czyszczenie nie nastąpi

find /tmp -ctime +10 -exec rm -rf {} +

usunie wszystkie pliki i foldery starsze niż 10 dni. możesz chcieć dodać go do codziennego crona.


AKTUALIZACJA

W komentarzach poniżej @sfussenegger zaleca nieco inny format tego polecenia, który może być lepiej dostosowany do twoich potrzeb i systemu, na którym pracujesz.

sudo find /tmp -type f -atime +10 -delete

Tutaj polecenie służy sudodo upewnienia się, że wszystko zostało usunięte (lub możesz uruchomić go jako root), działając na plikach, do których nie było dostępu przez ponad 10 dni i usuwa tylko pliki, a nie foldery . Używa również, -deleteaby uniknąć konieczności wykonywania rmpolecenia

Andrei R.
źródło
2
zamiast czasu utworzenia (-ctime) możesz zamiast tego użyć czasu dostępu (-atime) - oczywiście tylko wtedy, gdy system plików zachowuje te informacje (sprawdź, czy noatime w / etc / fstab)
sfussenegger
7
ok, proszę o wyrozumiałość, ale jest jeszcze jedna rzecz: chcesz przeszukiwać tylko pliki ( -type f). w przeciwnym razie może się okazać, że rodzic drzewa katalogów nie był dostępny od dłuższego czasu i usuń całą jego zawartość, która potencjalnie może być nadal używana. więc ostateczne polecenie, które poleciłbym tosudo find /tmp -type f -atime +10 -delete
sfussenegger
2
@sfussenegger, być może mógłbyś promować swoje komentarze do odpowiedzi? Myślę, że to lepsze niż ukrywanie się w komentarzach.
Jonathan
34

Możesz założyć, że wszystko w katalogu tmp (/ tmp / / usr / tmp itp.) Może zostać usunięte. PRZED rozpoczęciem usuwania zatrzymaj wszystkie programy i usługi, z których korzystasz, ponieważ / tmp / mogą być używane przez programy do tymczasowego przechowywania informacji dla tej sesji. Zrób to, sudo service mysql stopa sudo service apache2 stopjeśli masz uruchomiony mysql i / lub apache. Nazwy plików w katalogu / tmp / najczęściej wskazują na to, do jakiego programu należą.

Więc z wiersza poleceń ...

cd /tmp/
pwd
sudo rm -r *

opróżni katalog / tmp / i usunie wszystkie pliki i podkatalogi. Uważaj, aby wpisać go poprawnie. Polecenie pwdtam nie jest konieczne, ale powinno zostać wyświetlone /tmp.

Jeśli chcesz to interaktywnie (więc musisz potwierdzić usunięcie):

cd /tmp/
sudo rm -ri *

Warto również zauważyć, że ponowne uruchomienie wyczyści również / tmp, jak pokazano tutaj: Jak wyczyszczony jest katalog / tmp? Więc jeśli / tmp / jest pełen plików po restarcie, musisz sprawdzić, skąd pochodzą te pliki.

Chciałbym również powiedzieć, że 1 Mb dla / tmp to mało miejsca. Czy używasz MySQL? Zobacz https://unix.stackexchange.com/a/76058/10017, jak to naprawić (dzięki @drc)

Rinzwind
źródło
2
„bez szkody” dotyczy plików dat sprzed ostatniego restartu. W przeciwnym razie może być używany przez bieżący program i (dla tego programu) może powodować problemy ... na przykład mam skrypty, które tworzą pliki w / tmp, a następnie ponownie je czytają, aby wykonać następny krok (etapy) przetwarzania . usunięcie / obcięcie ich pomiędzy spowoduje zakłócenie działania programu (a nawet może doprowadzić do niebezpiecznych rezultatów, w zależności od tego, do czego te pliki są używane)
Olivier Dulac
... więc użycie who –b(data ostatniego rozruchu), a następnie utworzenie pliku / czasu przestoju z datą rozruchu ( touch ....... /boottime), pozwoli na bezpieczne wykonanie find /tmp -type f \( ! -newer /boottime \) -delete \;operacji usuwania tylko plików starszych niż ostatni rozruch
Olivier Dulac
Czy mogę użyć tych komentarzy, aby rozwinąć odpowiedź? Uwaga: tutaj / tmp prawdopodobnie pochodzi z mysql.
Rinzwind
4
Jako osoba mktempregularnie korzystająca z moich skryptów zdecydowanie nie zgadzam się ze stwierdzeniem „bez szkody”.
hytromo
2
Jeśli /tmpzawiera coś starszego niż ostatni restart, skrypty startowe nie wykonały swoich zadań.
Simon Richter
10

tmpreaperProgram może być używany do czyszczenia / tmp okresowo. Ten program usuwa wszystko, co nie było dostępne w danym przedziale czasowym, zwykle dwa tygodnie. Aby to działało poprawnie, system plików, na którym działa, powinien mieć atimeswłączoną opcję. Jeśli używasz tmpfs , co wydaje się, że robisz, to powinno być w porządku.

Oczywiście ponowne uruchomienie powoduje również wyczyszczenie / tmp , ale byłoby to nudne.

Simon Richter
źródło
Zaskakuje mnie, że nie jest to standardowa opcja w Ubuntu i Debianie. Dość często zdarza mi się napotykać stosunkowo nieuprzywilejowane procesy użytkownika wypełniające / tmp.
mędrzec
1
Tak, ale jest to zasada, którą administrator systemu musi ustawić. Jeśli masz długotrwałe usługi, które oczekują, że ich dane będą przechowywane, każde domyślne, ale „brak czyszczenia” byłoby niebezpieczne.
Simon Richter
7

Katalog /tmpoznacza tymczasowy.

W tym katalogu przechowywane są dane tymczasowe. Nie musisz niczego z niego usuwać, dane w nim zawarte są usuwane automatycznie po każdym ponownym uruchomieniu.

Nadal jeśli chcesz usunąć obecne w nim dane, użyj

sudo rm -r /tmp/*

usunięcie z niego nie spowoduje żadnego problemu, ponieważ są to pliki tymczasowe.

Tarun
źródło
9
Są tymczasowe w tym sensie, że nie są potrzebne po ponownym uruchomieniu, nie oznacza to, że nie są teraz potrzebne lub że nie będą potrzebne w ciągu 5 minut
Daniel Serodio
5
Nie jest prawdą, że to „nie spowoduje żadnego problemu”. Zrobiłem to raz, zanim poznałem lepiej i po prostu ukryłem swoją maszynę.
Kyle Strand
Zobacz także unix.stackexchange.com/q/11235/38050
Kyle Strand
4

Uważaj przed uruchomieniem polecenia typu rm -r ./*. Po uruchomieniu odzyskiwanie danych będzie bardzo trudne lub niemożliwe.

Wszystko zostanie usunięte. Upewnij się, że katalog, który usuwasz, jest poprawny.

Istnieje bezpieczniejszy sposób radzenia sobie z różnymi rzeczami.

# sudo rm -r /tmp/*

W ten sposób, jeśli przypadkowo uruchomisz to polecenie z poziomu powłoki history, nie usunie to niewłaściwych plików (chyba że je trzymasz /tmp).


źródło
2

/tmpKatalog zdaje się domyślnie przy każdym rozruchu, ponieważ TMPTIMEjest 0domyślnie.

Avinash Raj
źródło
1

Jeśli montowanie „/ tmp” w systemie plików Linux jest zamontowane jako przepełnienie (często ma wielkość 1 MB), jest to prawdopodobnie spowodowane tym, że nie określiłeś „/ tmp” jako własnej partycji, a główny system plików został zapełniony, a „/ tmp” było ponownie zamontowane jako awaryjne. Aby to naprawić po wyczyszczeniu miejsca, wystarczy odmontować awarię i powinno zostać ponownie zamontowane w pierwotnym punkcie:

sudo umount overflow

jeśli urządzenie jest zajęte, użyj

sudo umount -l overflow
ck reddy
źródło