Często używam /tmp
katalogu na moim komputerze z systemem Linux do przechowywania plików tymczasowych (np. Plików PDF ze strony, która chce, żebym go najpierw pobrał itp.) I często tworzę katalog z moją nazwą użytkownika. Ale przy każdym uruchomieniu jest usuwany (w tym wszystkie pliki). Teraz wiem, że mogę go umieścić /var/tmp
, ale chcę, aby cała jego zawartość została usunięta, ale sam katalog powinien zostać zachowany. Więc:
tmp
|- me # this should stay
| |- foo1 # this should be deleted...
| |- bar1 # ...and this as well
|- other stuff...
Czy jest na to sposób? Może z uprawnieniami lub ze specjalną konfiguracją?
/tmp
jest prawdopodobnie systememtmpfs
plików. Te pliki nie są tak naprawdę usuwane; są po prostu przechowywane w pamięci RAM i tracone podczas ponownego uruchamiania. Dlatego otrzymujesz odpowiedzi, które sprowadzają się do „odtworzenia go przy rozruchu lub logowaniu”Odpowiedzi:
Jednym rozwiązaniem byłoby użycie
@reboot
zadania cron:Dodanie tego do pliku crontab
crontab -e
spowoduje, że będzie on uruchamiany przy każdym uruchomieniu komputera.Albo użyj
w pliku startowym powłoki.
W obu przypadkach możesz także użyć
w pliku startowym powłoki, jeśli chcesz użyć tego katalogu jako domyślnego katalogu tymczasowego.
źródło
@reboot mkdir -p "/tmp/$USER"
na końcu crontab nic nie robi, a podczas pracymkdir -p "/tmp/$USER"
faktycznie tworzy katalog. Drugi nie działa dla mnie w drodze, bo trzeba uzyskać dostęp do mojego/tmp
pośrednictwem innych programów i rozpalanie za każdym powłoki jest trochę irytujące ...@reboot
cron nie tworzy katalogu? Czy otrzymujesz wiadomość e-mail na konto z komunikatami o błędach od demona cron?mail
? Czy to nie jest wymagane?Używam
pam-tmpdir
do tego: tworzy przy logowaniu tymczasowy prywatny katalog użytkownika. Aby to skonfigurować, dodajdo odpowiednich usług PAM; w systemie opartym na Debianie, instalacja
libpam-tmpdir
pakietu zaoferuje to za Ciebie, lub możesz dodać linię do/etc/pam.d/common-session
. Przy następnym logowaniu znajdziesz katalog/tmp/user
z identyfikatorem użytkownikaTMP
iTMPDIR
odpowiednio skonfigurowany.źródło
Jeśli nie masz systemu z systememd i używa on systemd-tmpfiles do zarządzania czyszczeniem, powinieneś skonfigurować katalog przy użyciu tego systemu.
Oto pełna dokumentacja . Prawdopodobnie możesz osiągnąć to, co chcesz, tworząc
/etc/tmpfiles.d/something.conf
takie treści, jak:źródło
Jak wskazano w komentarzach,
/tmp
dotyczy plików, które są przejściowe i nie zostaną pominięte, jeśli zostaną usunięte. Jeśli coś jest w środku, a komputer uruchomi się ponownie, wszystko, co tam napisałeś, zniknie i będziesz musiał zacząć od nowa, co oznacza, że te pliki mogły wcale nie być tak tymczasowe.Przez wiele lat utrzymywałem katalog tymczasowy w moim katalogu domowym, poczynając od gigabajta, który zajmował dużo miejsca, i stwierdził, że wymaga okresowego czyszczenia, aby pozbyć się starych i kruchych plików. Przez większość czasu, które mi pozostały po tym procesie, miałem mniej niż kilka tygodni, więc teraz oczyszczam je za pomocą zadania cron, które działa raz dziennie:
Wszystko, co pobieram lub tworzę w trybie tymczasowym, trafia tam, a system czyści wszystko, co pozostawiam. Wszystko, co potrzebuje stałego domu, dostaje się na długo przed tym, zanim cron się go pozbędzie.
źródło
mkdir a a/b; touch a/b/c
. Teraz poczekaj, aż upłynie 30 dni. Po usunięciu nastąpic
aktualizacjab
, co oznacza, że musi poczekać kolejne 30 dni. Podobnie z chwiląa
usunięciab
. Po drugie, jeśli utworzysz pliki,b
ale nie dotkniesz icha
przez 30 dni,a
katalog zostanie trafionyrm -rf
i wyczyści twoje ostatnie plikib
.find "$HOME"/tmp -mtime +30 -type f -delete; find "$HOME/tmp" -depth -mmin +60 -type d -exec rmdir {} + 2>/dev/null
pracuje dla mnie