Comanda cron job pentru stergere fisiere

Salut! Stie cineva cum ar trebui scrisa comanda pentru a sterge saptamanal fisierele temporare cu ajutorul CronJob de pe un server Apache 2.4.48, versiune php 7.0. Multumesc anticipat.

crontab -e să deschizi editorul de cron, apoi pui asta:

0 0 * * 1 rm -rf /tmp

Poţi încerca ceva vizual aici

1 Like

Paranteză, că mi-am adus aminte.

Aveam un cron job setat să șteargă fișiere dacă nu existau rânduri în baza de date de pe urma id-ului extras din denumirea fișierului. A căzut mysql-ul cu eroarea “MySQL server has gone away” și am șters absolut toate fișierele pentru că n-a fost găsit niciun rând. În mod normal trebuia să fie aruncată o eroare, numai că era oprită de un try/catch block cum numai eu puteam să-l fac. Am făcut o treabă minunată atunci. Norocul meu a fost că fișierele (PDF-uri) erau generate de pe urma unor date existente în baza de date. Le-am refăcut cu succes.

PS: Dacă folosești cPanel, poți crea cronjob-uri și din interfața cPanel.

2 Likes

Atenție foarte mare ce ștergi și cum ștergi. In /tmp pot să existe fișiere pe care NU vrei să le ștergi (de exemplu directoare, sockets sau fișiere în curs de utilizare). Eu folosesc ceva de genul ăsta:

00 0 * * * root /usr/bin/find /tmp -type f -mtime +7 -delete

Asta șterge zilnic DOAR fișiere (nu foldere, nu sockets, nu alte fișiere speciale) mai vechi de 7 zile.

Și încă ceva foarte important, ai foarte mare grijă cum scrii path-urile. Un simplu spațiu strecurat aiurea îți șterge complet tot sistemul operare (de exemplu în loc de “/tmp” să scrii “/ tmp”.

6 Likes

find /path/to/your/dir -type f -mtime +1 | xargs rm

Adica: sterge fisierele mai vechie de o zi din folderul respectiv

Pentru debug poti da doar find /path/to/your/dir -type f -mtime +1 sa vezi ce o sa stearga

2 Likes

In nici un caz nu vrei sa iti faci singur un cron care sa-ti stearga fisierele din /tmp sau /var/tmp!!

Distributia deobicei are mecanisme in-place pentru asta. Daca nu-s activate sau daca se doreste stergerea mai desa a acestora trebuie modificate configurile lor aferente.

Motivul pentru care nu vrei sa le stergi de unul singur este ca trebuie sa faci toate verificarile de unul singur:

  • il mai foloseste vreun proces fisierul?
  • se asteapta cineva ca inca sa existe acel fisier?
  • lockuri are acel fisier?

Deobicei:

  • /tmp este sters la reboot si la fiecare 10 zile
  • /var/tmp nu este sters la reboot, dar se incearca stergerea fisierelor din folder la 30 de zile
2 Likes

Va multumesc mult pentru raspunsuri. Cred ca nu voi utiliza Cron Job, spatiu pe server este suficient, asa ca nu vreau sa risc sa sterg ceva ce nu trebuie, ca oricum nu prea ma pricep.