Skocz do zawartości

Opróżnianie /tmp


borzole

Rekomendowane odpowiedzi

Witam,

zrobiłem sobie skrypt do opróżnianie /tmp z plików starszych niż czas uruchomienia systemu. Docelowo uruchomię go z /etc/rc.local

#!/bin/bash

TEST=TRUE

# liczymy uptime na minuty
UPTIME=$(cat /proc/uptime | cut -d\. -f1)
let UPTIME=$(($UPTIME/60+1))
echo "$UPTIME min = $(uptime)"

# operacja na plikach starszych niż uptime
if [ "$TEST" == "FALSE" ]; then
     # usuń pliki
     find /tmp -cmin +$UPTIME -exec rm -rf '{}' 2>/dev/null \;
else
     # wyświetl pliki
     find /tmp -cmin +$UPTIME -exec ls -la '{}' 2>/dev/null \;
fi

skrypt działa i jest ok, natomiast mam wątpliwość czy można sobie tak po prostu usunąć pliki z /tmp starsze niż uptime. :?:

Nie chciałbym sobie czegoś schrzanić :unsure: zawsze chucham na zimne i usuwam pliki starsze o uptime + kilka dni.

Odnośnik do komentarza
Udostępnij na innych stronach

Prawidłowo napisany program, nie powinien również nić pozostawiać po sobie w /tmp a mam po każdym uruchomieniu więcej plików np. keyring-***, virtual-lucas.*** itd.

 

Może spytam inaczej.

Czy jest możliwe, że przed włączeniem się licznika /proc/uptime zostanie utworzony jakiś plik w /tmp lub że z jakiś powodów uptime w ogóle nie zacznie odliczania/nie będzie istniał :?:

Sytuacja wydaje się być skrajnym przypadkiem, ale co by musiało się stać by do niej doszło?

Odnośnik do komentarza
Udostępnij na innych stronach

Ja co jakiś czas ręcznie wywalam wszystko z /tmp, ale wymaga to chwilowego wylogowania, bo niektóre okienkowe programy głupieją. Inna sprawa, że /tmp po około miesiącu od ostatniego czyszczenia nie przekracza u mnie 300 kilobajtów, więc bardzo się nie przejmuję. No chyba, że zależy ci na prywatności.

 

Te kilka dni dobry pomysł, ale jak sam napisałeś to dmuchanie na zimne.

Odnośnik do komentarza
Udostępnij na innych stronach

Prawidłowo napisany program, nie powinien również nić pozostawiać po sobie w /tmp a mam po każdym uruchomieniu więcej plików np. keyring-***, virtual-lucas.*** itd.

 

Może spytam inaczej.

Czy jest możliwe, że przed włączeniem się licznika /proc/uptime zostanie utworzony jakiś plik w /tmp lub że z jakiś powodów uptime w ogóle nie zacznie odliczania/nie będzie istniał :?:

Sytuacja wydaje się być skrajnym przypadkiem, ale co by musiało się stać by do niej doszło?

 

Uptime jest liczony w przestrzeni kernela i nie ma związku z /tmp. Tak więc nawte jeżeli nie będziesz ty, lub system mógł pisać do /tmp, jak również nawrzucasz tam wszystkie możliwe nazwy plików z każdą możliwą zawartością uptime nadal będzie.

 

Swoją drogą co ci na wartości uptime tak zależy?

Odnośnik do komentarza
Udostępnij na innych stronach

Swoją drogą co ci na wartości uptime tak zależy?

Trochę z ciekawości, ale również dlatego, że jest głównym parametrem przy usuwaniu plików w tym skrypcie. Jeśli z jakichś powodów wartość by nie istniała wówczas powinienem to uwzględnić w skrypcie inaczej mógłbym usunąć niewłaściwe pliki, a w najlepszym przypadku żadnych.

 

@SeeM

W /tmp znajdują się m.in. plik gniazda i nic dziwnego że głupieją. To tak jakby Tobie nogę odrąbał na chwilę. :ph34r:

np.

lsof | grep /tmp

Odnośnik do komentarza
Udostępnij na innych stronach

  • 4 weeks later...

@Jusko

No prawie. Ja np. nie mam usługi "syslog" :) Ale możesz dopisać to do innej ważnej usługi, która na pewno działa. Trochę to nieeleganckie, ale poprawne.

Ciekawa jest ta konstrukcja: rm -rf /tmp/.??* /tmp/* a dokładnie to .??* Otóż wyklucza to "..". Bez "??" polecenie wyskoczy o jeden poziom i usunie wszystko od korzenia :ph34r: Dobre co :?: !!

 

* mój skrypt używam i wszystko jest OK! Co ciekawe znalazłem w systemie narzędzie specjalnie do tego:

man tmpwatch

miałem przebudować skrypt, ale...

 

* ...pomyślałem, że lepiej zamontować /tmp w RAM i olać te problemy:

- wylogować się

- nacisnąć [Ctrl]+[Alt]+[F2]

- zalogować się jako root

- wpisać: init 3

- wyczyścić/przenieść zawartość /tmp

- dopisać do /etc/fstab

# /tmp w RAM
   tmpfs            /tmp        tmpfs        defaults,size=1024M,mode=1777 0 0

-przeładować montowanie partycji:

mount -a

-wpisać init 5

Odnośnik do komentarza
Udostępnij na innych stronach

Prawidłowo napisany program, nie powinien również nić pozostawiać po sobie w /tmp a mam po każdym uruchomieniu więcej plików np. keyring-***, virtual-lucas.*** itd.

 

Taka ciekawostka. Jak sobie w wakacje składałem LFS (Linux From Scratch) to wszystkie paczki wrzucałem sobie do /tmp (napisalem prosty menedzer pakietów w perlu) no i było super. 30 pakietów ładnie zrobionych w tar.gz gotowych do instalacji. Wrzuciłem reboota i w GRUBie wybrałem LFS.

Jakieś wielkie zdziwienie mnie ogarnęło gdy zobaczyłem na inicie skrypt z opisem: Removing Temporary Files.

 

System się zabootował i wykonałem ls -l /tmp.

Wszystko poszło wpi* (:

 

Tak więc jak widać, sprawa /tmp zależy od dystrybucji, ale skoro w LFS czyszczenie /tmp jest przy starcie, to pewnie samo rm -rf /tmp/* w rc.local by wystarczyło...

 

Ew, mogę wrzucić tu ten skrypt startowy z LFSa, bo chyba jeszcze go mam na dysku...

Odnośnik do komentarza
Udostępnij na innych stronach

Czyli wymyślam koło od nowa, bo ktoś je łaskawie wyrzucił dla naszego dobra ;)

 

Tak z ciekawości sprawdziłem, czy coś czyści /tmp i wygląda na to że

$ sudo grep tmpwatch -R /etc/*
/etc/cron.daily/cups:    /usr/sbin/tmpwatch -f 720 "$d"
/etc/cron.daily/tmpwatch:/usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \
/etc/cron.daily/tmpwatch:/usr/sbin/tmpwatch "$flags" 30d /var/tmp
/etc/cron.daily/tmpwatch:    /usr/sbin/tmpwatch "$flags" -f 30d "$d"

...nie (sprawdziłem, to nie linki)

 

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...