Bash-Befehl in Crontab funktioniert nicht

578
Nikesh

Ich habe eine Crontab, die jede Minute läuft und einige Verzeichnisse und Dateien entfernt.

Mein Cron sieht so aus

* * * * * bash /var/www/html/Database/Backup/Remove_Old_Backups >/dev/null 2>&1 

In meinem Protokoll kann ich sehen, wie der Befehl ausgeführt wird

CRON[57937]: (kahoadmin) CMD (bash /var/www/html/Database/Backup/Remove_Old_Backups >/dev/null 2>&1) 

Dies ist meine Skriptdatei

#!/bin/bash  ROOTDIR="/var/www/html/Database/Backup/Backups/*"  sudo find $ROOTDIR -mtime +5 | xargs rm -f -r 

Wenn ich dieses Skript direkt starte, arbeite ich und entferne das Verzeichnis und die Dateien. Nur in Crontab funktioniert es nicht

Kann mir jemand helfen, herauszufinden, was hier schief läuft?

1

1 Antwort auf die Frage

1
davidgo

Meine Vermutung ist, dass Ihre Berechtigungen für sudo falsch sind (es ist jedoch auch denkbar, dass Sie die Pfade für find und xargs verpassen, wenn Sie cron ausführen).

Wenn ich es wäre, würde ich - 1. Legen Sie die Datei in / etc / crontab ab und führen Sie sie als root aus. 2. Ändern Sie es in ein einzeiliges Skript mit weniger Abhängigkeiten (wie ich es oft getan habe). Ich würde die folgende Zeile in / etc / crontab einfügen

* * * * * root /bin/find /var/www/html/Database/Backup/Backups mtime +5 -exec rm -rf {} + 

Was dasselbe tut, ohne sich auf xargs zu verlassen

Ich stelle fest, dass Sie eine -rf ausführen - möchten Sie wirklich das rekursive Löschen erzwingen - insbesondere einen automatisierten Prozess in allen Unterverzeichnissen?

Ich habe das Sudo im Skript entfernt. Es funktionierte. Vielen Dank Nikesh vor 6 Jahren 0