web-dev-qa-db-fra.com

Cron: Comment supprimer un répertoire via cron

J'ai déjà installé cron et le voici

1 0 * * * rm -R/chemin/vers/mon/dossier/$ (date + '% Y-% m-% d' -d "hier")

Je veux supprimer tous les dossiers quotidiens avec "Nom d'hier" LIKE "2014-12-14"

Voici mon ubuntu/var/log/syslog lorsque j'exécute la commande "grep CRON"

16 déc. 00:01:01 {SERVERNAME} CRON [21031]: (racine) CMD (rm -R/chemin/vers/mon/dossier/$ (date + ')) 16 déc. 00:01:01 {SERVERNAME} CRON [ 21030]: (CRON) info (Pas de MTA installé, sortie rejetée)

2
Aramayis Mkrtchyan

La page de manuel (man 5 crontab) dit:

La totalité de la partie commande de la ligne, jusqu'à un caractère de nouvelle ligne ou%, sera exécutée par/bin/sh ou par le shell spécifié dans la variable shell du fichier crontab. Les signes en pourcentage (%) de la commande, sauf s'ils sont précédés d'une barre oblique inverse (), sont transformés en caractères de nouvelle ligne et toutes les données suivant le premier% sont envoyées à la commande en tant qu'entrée standard.

Vous devez donc remplacer chaque % dans votre format de date par \%:

1 0 * * * rm -R /path/to/my/folder/$(date +'\%Y-\%m-\%d' -d "yesterday")
2
Florian Diesch

Vous pouvez utiliser cette commande

find /path/to/dir -maxdepth 0 -ctime +1 -exec rm -fr {} +

c'est à dire

1 0 * * * find /path/to/dir -maxdepth 0 -ctime +1 -exec rm -fr {} +

Le crédit va ici

0
rɑːdʒɑ