Jak /tmpsprzątany jest katalog? Czy to jest automatyczne? Jeśli tak, to jak często jest sprzątany?
Jak /tmpsprzątany jest katalog? Czy to jest automatyczne? Jeśli tak, to jak często jest sprzątany?
Odpowiedzi:
Uwaga! Ta odpowiedź jest nieaktualna, ponieważ przynajmniej Ubuntu 14.04. Zobacz inne odpowiedzi na bieżącą sytuację, a jeśli okażą się poprawne, głosuj z wściekłością. Prześlij także komentarz, aby umieścić tutaj link do aktualnej poprawnej odpowiedzi.
14.04 patrz https://askubuntu.com/a/759048/1366
16.10 patrz https://askubuntu.com/a/857154/453746
Stara odpowiedź z 2011 r .:
Czyszczenie /tmpodbywa się za pomocą skryptu upstart /etc/init/mounted-tmp.conf. Skrypt jest uruchamiany przy każdym uruchomieniu /tmp. Praktycznie oznacza to przy każdym rozruchu.
Skrypt wykonuje mniej więcej następujące czynności: jeśli plik w /tmpstarszym wieku niż kilka $TMPTIMEdni, zostanie usunięty.
Domyślna wartość $TMPTIMEto 0, co oznacza, że każdy plik i katalog w nim /tmpzostanie usunięty. $TMPTIMEjest zmienną środowiskową zdefiniowaną w /etc/default/rcS.
Katalog jest domyślnie czyszczony przy każdym uruchomieniu, ponieważ TMPTIMEdomyślnie jest równy 0.
Tutaj możesz zmienić czas w następującym pliku:
/etc/default/rcS
TMPTIME mówi, jak często tmp dir powinien być usuwany w ciągu kilku dni
tmpreaperszansę.
tmpwatchPowinno też być odpowiednim narzędziem.
Chociaż /tmpfolder nie jest miejscem do przechowywania plików przez dłuższy czas, czasami chcesz zachować trochę więcej czasu niż przy następnym uruchomieniu , co jest domyślne w systemach Ubuntu. Wiem, że raz lub dwa pobrałem coś /tmppodczas testowania, po wprowadzeniu zmian uruchomiłem ponownie, a następnie ponownie straciłem oryginalne dane. Można to zmienić, jeśli chcesz /tmptrochę dłużej przechowywać swoje pliki.
Zmiana /tmpczęstotliwości czyszczenia
Domyślne ustawienie, które nakazuje systemowi wyczyścić się /tmpprzy ponownym uruchomieniu, znajduje się w /etc/default/rcSpliku. Wartość, na którą będziemy patrzeć, to TMPTIME.
Obecna wartość TMPTIME=0mówi usuń pliki przy ponownym uruchomieniu, pomimo wieku pliku. Zmiana tej wartości na inną (dodatnią) liczbę spowoduje zmianę liczby dni, przez które plik może przetrwać /tmp.
TMPTIME=7
To ustawienie pozwoli na pozostanie plików do ukończenia /tmptygodnia, a następnie usunie je przy następnym uruchomieniu. Liczba ujemna ( TMPTIME=-1) informuje system, aby nigdy niczego nie usuwał /tmp. Prawdopodobnie nie jest to coś, czego chcesz, ale jest dostępne.
/etc/init/mounted-temp.conf, ale ma linię, start on mounted MOUNTPOINT=/tmpktóra sprawia, że uważam, że nie dotyczy.
/var/tmpzamiast /tmp.
Sprawdzam to na Ubuntu 16.10. Mogę poświadczyć, że edycja / etc / default / rcS nie ma już żadnego efektu, a pliki w tmp są usuwane przez restart, bez względu na to, co umieścisz w tym pliku. Jak wspominają inni, tmpreaper nie jest już używany.
Myślę, że właściwą odpowiedzią jest to, że Ubuntu 16.10 ma nową konfigurację. Istnieje folder /etc/tmpfiles.d, udokumentowany na stronie podręcznika „tmpfiles.d”. W tym folderze należy umieścić plik konfiguracyjny, aby kontrolować, czy / tmp ma zostać skasowany. Oto, co robię, aby zatrzymać ponowne uruchamianie w celu usunięcia plików w / tmp, chyba że mają one 20 dni:
#/etc/tmpfiles.d/tmp.conf
d /tmp 1777 root root 20d
Zamień „20d” na „-”, jeśli nigdy nie chcesz, aby pliki były usuwane. To jest mój najlepszy wysiłek, że strona podręcznika jest prawie nieprzenikniona ze szczegółami.
Zaletą nowej konfiguracji jest to, że narzędzie do czyszczenia plików może nadal działać, nawet jeśli system nie zostanie ponownie uruchomiony (jak w przypadku zawsze na serwerze). To chyba duży plus.
man tmpfiles.d
d /tmp/ - - - 20d
systemctl start systemd-tmpfiles-clean
W Ubuntu 14.04 odbywa się to przez tmpreaper, który jest wywoływany codziennie przez cron (from /etc/cron.daily). Program można skonfigurować za pomocą /etc/default/rcSi /etc/tmpreaper.conf.
Jest czyszczony przy każdym ponownym uruchomieniu.
tmpreaper.
W systemdUbuntu (15.10 i nowszych) odbywa się to przez systemd, przy użyciu systemd-tmpfiles-cleanusługi i timera:
$ systemctl cat systemd-tmpfiles-clean.service
# /lib/systemd/system/systemd-tmpfiles-clean.service
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
[Unit]
Description=Cleanup of Temporary Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
DefaultDependencies=no
Conflicts=shutdown.target
After=local-fs.target time-sync.target
Before=shutdown.target
[Service]
Type=oneshot
ExecStart=/bin/systemd-tmpfiles --clean
IOSchedulingClass=idle
I
$ systemctl cat systemd-tmpfiles-clean.timer
# /lib/systemd/system/systemd-tmpfiles-clean.timer
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
[Unit]
Description=Daily Cleanup of Temporary Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
[Timer]
OnBootSec=15min
OnUnitActiveSec=1d
Więc systemd-tmpfiles-cleandziała przy wyłączeniu, a raz dziennie inaczej. Pliki, które czyści, można rozszerzyć, używając /etc/tmpfiles.dwspomnianej w innej odpowiedzi .
Możesz sam zmienić zachowanie timera za pomocą systemctl edit systemd-tmpfiles-clean.timeri różnych Timeropcji konfiguracji systemowej (patrz man 5 systemd.timer).
/tmpwciąż nie posprzątałem. i muszę to wyczyścić. nawet ręczne uruchomienie sudo systemctl start systemd-tmpfiles-cleannie załatwia sprawy. Jakieś pomysły dlaczego?
Na jednym z naszych serwerów z Ubuntu mamy skrypt do usuwania plików z katalogu / tmp i działa on co noc.
Skrypt to:
#!/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 {} \;
Po prostu zapisz powyższą zawartość do pliku chmod 775 i stwórz wpis crona, aby go uruchomić. Ponieważ jest to serwer sieciowy, nie chcemy go ponownie uruchamiać z oczywistych powodów.
ln -s /usr /tmp/kabooma nawet ln -s /* /tmp/...
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0/ etc / fstab.