Usa il carattere jolly. E inseriscilo nel tuo crontab
usa il crontab -e
opzione per modificare i lavori di crontab.
Vedi esempio:
* * * * * find /path/to/*.log -mtime +7 -exec rm -f {} \;
Solo per incrementare la risposta controlla questo bell'articolo su come lavorare con il tuo crontab
! in Linux .
Modifica il tuo personale crontab eseguendo crontab -e
.Questo viene salvato in /var/spool/cron/<username>
. Il file sarà il nome utente del proprietario, quindi root sarà /var/spool/cron/root. Tutto nel file viene eseguito come proprietario del file.
La sintassi per crontab è la seguente:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
Quando modifichi il tuo personale crontab, tramite crontab -e
, ometti il campo del nome utente, perché l'utente viene dedotto dal nome del file (vedi primo paragrafo).
Detto questo, la tua voce dovrebbe assomigliare a questa:
0 5 * * * find /path/to/*.log -mtime +7 -delete
Verrà eseguito ogni giorno, alle 5:00 AM, ora di sistema. Non penso che tu abbia bisogno che venga eseguito più frequentemente di ogni giorno, dato che stai rimuovendo file che durano 7 giorni vecchio.
Per favore, non usare più del -exec
opzione, quando -delete
opzione fa esattamente quello che vuoi fare. L'exec esegue il fork di una shell per ogni file ed è eccessivamente dispendioso in termini di risorse di sistema.
Quando hai finito, puoi usare crontab -l
per elencare il tuo crontab personale.
p.s. L'editor predefinito sulla maggior parte dei sistemi Linux è vi, se non conosci vi, usa qualcosa di semplice come nano impostando la tua variabile ambientale export EDITOR=nano
find /path/to/dir-containing-files -name '*.log' -mtime +7 -exec rm -f {} \;
Per creare un cron job, inserisci un file contenente quanto segue nella directory /etc/cron.daily:
#!/bin/sh
find /path/to/dir-containing-files -name '*.log' -mtime +7 -exec rm -f {} \;