Miałem wrażenie, że „stare” pliki /tmp
będą regularnie usuwane. Wydaje mi się jednak, że /tmp
będzie rosło tak długo, jak chce i nic nie zostanie usunięte. Niektórzy twierdzą, że lepiej zostawić w /tmp
spokoju i usunąć jego zawartość tylko wtedy, gdy dysk się zapełni.
Moje pytanie brzmi: czy /tmp
naprawdę jest tak zaprojektowane, aby nie zadbać o siebie? Jakie są najlepsze praktyki?
/tmp
jest czyszczony po ponownym uruchomieniu, ale zależy to od zamontowanego tam systemu plików. Codf -h
mówiOdpowiedzi:
Aby odpowiedzieć na pytania:
/tmp
powinien być opróżniany automatycznie: Tak/tmp
regularnie i ręcznie: Nie , twój system się nimi zajmie.Jeśli możesz zadać sobie pytanie:
/tmp
dowolnego powodu (potrzebuję miejsca, chcę usunąć ślady itp.): To zależy , czytaj dalej .System plików Hierarchy Standard (FHS) stwierdza :
/var/tmp/
ma podobny cel , ale nie można go usunąć podczas ponownego uruchamiania.Jest to nie gwarantuje , że
/tmp/
albo/var/tmp/
są czyszczone regularnie. Może to zależeć od dystrybucji i ustawień, chociaż większość systemów od czasu do czasu wykonuje pewne porządki. Zobacz komentarz autorstwamike
.Jeśli musisz usunąć plik w / tmp , najpierw sprawdź, czy plik jest w użyciu. Możesz to łatwo zrobić za pomocą:
Jeśli masz do tego uprawnienia, pokaże to proces trzymający uchwyt tego pliku, taki jak nazwa procesu, PID i typ pliku. Aby pokazać naprawdę wszystkie procesy, dodaj
sudo
lub uruchom jako użytkownik root .pokaże Ci wszystkie pliki
/tmp
i katalogi poniżej (+D
), które są obecnie otwarte. Oczywiście nie powinieneś usuwać tych plików.W rzeczywistości po usunięciu pliku, który jest nadal otwarty - jeśli masz do tego uprawnienia - staje się niedostępny z przestrzeni nazw systemu plików, ale nadal istnieje dla procesów, które mają dla niego otwarty uchwyt pliku. Po zamknięciu tego uchwytu plik nie jest już dostępny dla tego procesu, a jeśli żaden proces nie otworzył już pliku, jest on ostatecznie usuwany. Proces nie powinien zakładać, że plik przetrwa między kolejnymi
open
wywołaniami, ale programiści są niechlujni i nigdy nie wiadomo. Z tego powodu nie jest tak sprytnie usuwać pliki, które są nadal używane przez niektóre programy.źródło
Myślę, że to zależy od systemu operacyjnego. Wyobrażam sobie, że / tmp jest zwykle czyszczony przy ponownym uruchomieniu i rzeczywiście nie byłoby bezpieczne, aby system wyczyścił się w trakcie sesji, ponieważ nie będzie wiedział, które pliki są aktywne.
Jeśli jesteś odważny, możesz rzucić polecenie crontab, które usuwa pliki starsze niż określony wiek, ale może to powodować pewne problemy, jeśli usuwa pliki nadal używane. Możesz spróbować wykonać polecenie (jeszcze go nie próbowałem)
Co teoretycznie usunie wszystkie pliki w katalogu / tmp starsze niż 10 dni.
źródło
-r
do tegoKatalogi / tmp i / var / tmp są czyszczone zgodnie z normalnym harmonogramem. To może zależeć od twojej dystrybucji. W moim systemie CentOS (klon RedHata) jest zaplanowane zadanie crona, aby uruchamiać tmpwatch , program czyszczący tmp dir, codziennie . Pliki w / var / tmp mogą pozostawać nieco dłużej niż pliki w / tmp /. Widziałem także skrypty, które przycinają / tmp (ale wyraźnie nie / var / tmp) podczas ponownego uruchamiania, wiedząc, że nic nie może trzymać tego pliku otwartego, ponieważ wszystkie procesy są nowe.
Tak, tak, / tmp ma obsługę od podstawowych skryptów. Nadal może wypełnić się poza tymi czasami konserwacji. Jeśli zdecydujesz się czyścić rzeczy ręcznie, najlepszą praktyką sysadmin jest ostrożność. Wiedza Sysadmin mówi o dowiązaniach symbolicznych w / tmp wskazujących na niezbędne pliki systemowe, które zostały usunięte, gdy sysadmins n00b uruchomił prosty
find
skrypt.źródło
W CentOS jest
/etc/cron.daily
wywoływane zadanie,tmpwatch
które rekurencyjnie usuwa pliki, do których nie uzyskano dostępu przez określony czas. Zwykle służy do czyszczenia katalogów używanych do tymczasowego przechowywania miejsca, takiego jak / tmp.To jest
/etc/cron.daily/tmpwatch
skrypt/tmp
zawartość katalogu jest usuwana tylko podczas ponownego uruchamiania systemu, ponieważ uruchomiony proces może mieć dostęp do plików z tego katalogu.źródło
Możesz usunąć zawartość z
/tmp/
; ale problem polega na tym, że jeśli masz usługę, która regularnie pisze/tmp/
i usuwasz pliki, możesz spowodować awarię lub uszkodzenie usługi, dopóki nie zostanie ponownie uruchomiona.źródło
FHS definiuje
/tmp
katalogu jako „pliki tymczasowe (patrz również / var / tmp), często nie zachowały się między ponownym uruchomieniu systemu”, a/var/tmp
jako „tymczasowe pliki mają być zachowane między restartów”.Obecnie,
/tmp
ponieważ system plików RAM (tmpfs) jest domyślnie (choć opcjonalny) w wielu dystrybucjach GNU / Linux,/tmp
jest w zasadzie nietrwały.(Prawdopodobnie) aplikacje powinny odpowiednio zarządzać swoimi plikami tymczasowymi, co moim zdaniem obejmuje ich usuwanie po zakończeniu ich używania i nie wymaga od administratorów planowania możliwych destrukcyjnych operacji usuwania.
źródło
/tmp
gdy są z nimi zrobione lub gdy wychodzą, ale nadal istnieje problem z plikami pozostawionymi/tmp
po nieprawidłowym zakończeniu (awarii) programu.Jeśli korzystasz z Debiana (lub pochodnej takiej jak Ubuntu) powinieneś spojrzeć na plik / etc / default / rcS i dostosować
TMPTIME
zmienną środowiskową. Z definicji, co znajduje się w / tmp, nie ma tu nic do roboty przy następnym restarcie.polecam
TMPTIME
zmiennej na serwerzeźródło
Dystrybucje są oczywiście różne, ale spodziewam się, że pliki tymczasowe będą automatycznie zarządzane przez system po wyjęciu z pudełka. Prawdopodobnie użyliby zadań cron lub usługi systemd-tmpfiles-clean. Jeśli martwisz się o miejsce na dysku, jest to przydatne polecenie, aby sprawdzić, ile miejsca zajmuje każdy folder główny:
Aby sprawdzić, czy system używa usługi systemd do zarządzania plikami tymczasowymi, możesz po prostu spróbować:
Na dole zobaczysz coś takiego, co mówi, kiedy usługa była ostatnio uruchamiana:
Pamiętaj, że ta usługa zostanie zakończona, gdy tylko zakończy się czyszczenie. Usługa timera jest odpowiedzialna za regularne uruchamianie. Możesz to sprawdzić za pomocą:
I powinieneś spodziewać się czegoś takiego:
Jeśli spojrzysz ponownie na rzeczywistą usługę odpowiedzialną za czyszczenie plików, zobaczysz, że wszystko, co robi, to uruchomić:
Możesz więc uruchomić to polecenie bezpośrednio lub wykonać to poprawnie, po prostu wykonaj:
Które uruchomi odpowiednie polecenie dla twojego systemu. Należy jednak pamiętać, że nie jest to polecenie „usuń teraz wszystkie pliki tymczasowe”. Istnieje kilka plików konfiguracyjnych, które kontrolują to, co faktycznie zostanie usunięte, i kiedy aplikacje mogą indywidualnie konfigurować swoje pliki tymczasowe.
Jednym miejscem, w którym można znaleźć ogólną obsługę plików tymczasowych, mogą być
/usr/lib/tmpfiles.d/tmp.conf
następujące odpowiednie linie:Możesz zmienić te ustawienia na krótsze, jeśli w systemie zaczyna brakować miejsca, na przykład:
Aby mieć pewność, co robisz,
man tmpfiles.d
przeczytaj instrukcję. Znów uważam, że przedstawione tutaj podejście jest odpowiednie dla CentOS (opartego na RedHat) i systemu Ubuntu, ale niewiele wiem o innych dystrybucjach.źródło