🢂💻 Regularne czyszczenie folderu ‑ sposób z systemd‑tmpfiles

Systemd ma usługę systemd-tmpfiles, która automatycznie usuwa stare pliki z określonych katalogów. Dzięki temu cache się nie rozrasta.

Jak to działa

Systemd ma usługę systemd-tmpfiles, która automatycznie usuwa stare pliki z określonych katalogów. Dzięki temu cache się nie rozrasta, ale dalej działa z dysku (czyli aplikacje nie muszą budować wszystkiego od zera przy każdym restarcie).

Jak to zastosować

1. Stwórz plik konfiguracyjny

sudo nano /etc/tmpfiles.d/your-service.conf

W pliku konfiguracyjnym możesz określić katalogi, które mają być czyszczone, np.:

D /var/cache/your-service 0755 your-user your-group 7d

W powyższym przykładzie:

  • D oznacza, że jest to katalog
  • /var/cache/your-service jest ścieżką do katalogu
  • 0755 to uprawnienia
  • your-user to użytkownik
  • your-group to grupa
  • 7d – pliki starsze niż 7 dni będą usuwane (możesz zmienić na 1d, 30d, itd.).

1.1 Uruchom ręczne czyszczenie (test):

sudo systemd-tmpfiles --create /etc/tmpfiles.d/your-service.conf

Sprawdź czy działa

Wygląda, że pytasz: jak sprawdzić, czy systemd-tmpfiles jest uruchomione i czy działa dla reguły czyszczącej ~/.cache. Poniżej masz krótką checklistę z komendami.

Czy reguła jest widoczna i poprawna

# pokaż wszystkie wczytane pliki konfiguracyjne i sprawdź, czy widać swami-cache.conf
systemd-tmpfiles --cat-config | grep -n your-service.conf

Czy działa timer i usługa

# status timera uruchamiającego czyszczenie
systemctl status systemd-tmpfiles-clean.timer

# kiedy ostatnio i kiedy następny raz się uruchomi
systemctl list-timers | grep tmpfiles

# status samej usługi "clean"
systemctl status systemd-tmpfiles-clean.service

Jeśli timer jest wyłączony:

sudo systemctl enable --now systemd-tmpfiles-clean.timer

Suchy test (bez kasowania)

sudo systemd-tmpfiles --clean  --verbose --noop /etc/tmpfiles.d/your-service.conf
  • noop wykona „dry-run”: pokaże, co by usunął, ale niczego nie skasuje.
  • verbose wypisze szczegóły.

Logi z działania

# dzisiejsze logi usługi czyszczącej
journalctl -u systemd-tmpfiles-clean --since "today"

# logi z ostatnich 24 godzin
journalctl -u systemd-tmpfiles-clean --since "24 hours ago" 

Wynik powinien być podobny do tego

Aug 27 08:43:49 laptop systemd[1]: Starting systemd-tmpfiles-clean.service - Cleanup of Temporary Directories...
Aug 27 08:43:49 laptop systemd[1]: systemd-tmpfiles-clean.service: Deactivated successfully.
Aug 27 08:43:49 laptop systemd[1]: Finished systemd-tmpfiles-clean.service - Cleanup of Temporary Directories.
-- Boot d5d02902c1324298bc78c1afc99db608 --
Aug 27 16:29:25 laptop systemd[1]: Starting systemd-tmpfiles-clean.service - Cleanup of Temporary Directories...
Aug 27 16:29:25 laptop systemd[1]: systemd-tmpfiles-clean.service: Deactivated successfully.
Aug 27 16:29:25 laptop systemd[1]: Finished systemd-tmpfiles-clean.service - Cleanup of Temporary Directories.
-- Boot 770e3a855b574176840c1b59bcdba86a --
Aug 27 17:22:41 laptop systemd[1]: Starting systemd-tmpfiles-clean.service - Cleanup of Temporary Directories...
Aug 27 17:22:41 laptop systemd[1]: systemd-tmpfiles-clean.service: Deactivated successfully.
Aug 27 17:22:41 laptop systemd[1]: Finished systemd-tmpfiles-clean.service - Cleanup of Temporary Directories.

Co do czego

W systemie Linux cache jest często używany do przechowywania danych, które są często używane, aby zwiększyć wydajność systemu. Systemd-tmpfiles jest narzędziem, które automatycznie usuwa stare pliki z określonych katalogów, aby uniknąć rozrastania się cacheu.