
Ich habe einen Cron-Job, der jeden Tag um 2 Uhr morgens ein Shell-Skript auslösen soll.
0 2 * * * /root/bin/script.sh
Es funktioniert jedoch überhaupt nicht. Was übersehe ich?
Weitere Einzelheiten: Das Skript läuft bei manueller Ausführung ohne Cron-Planung einwandfrei und tut, was es tun soll. Der Root-Benutzer führt den Cron-Job aus. Der Cron-Job wurde von crontab -e
einem root
Benutzer geplant. pgrep cron
gibt eine Service-ID an, die bedeutet, dass der Cron-Dienst ausgeführt wird. Im Folgenden finden Sie den Inhalt der /root/bin/script.sh
Datei:
BACKUP_LOG=/var/log/backup.log
exec 1> >(while IFS= read -r line; do echo "$(date --rfc-3339 ns) $line"; done | tee -a ${BACKUP_LOG}) 2>&1
# Back up the etc directory
mkdir /home/directory1/backup/etc_backup
cp -Lrp /etc /home/data/backup/etc_backup
tar czf /home/data/backup/etc_backup.tgz
/home/data/backup/etc_backup
rm -rf /home/data/backup/etc_backup
Eigentlich habe ich das Skript von /etc/cron.daily/
nach verschoben /root/bin
. Soll das Skript /etc/cron.daily
nur für die tägliche Ausführung in sein?
Antwort1
Ich vermute, dass Ihr Skript von der Shell nicht richtig verstanden wird, weil es keinen richtigen Shebang hat. Versuchen Sie es crontab -e
stattdessen mit Folgendem:
0 2 * * * bash /root/bin/script.sh > /tmp/crontest.log 2>&1
Wenn Sie das Skript direkt mit Bash aufrufen, sollte es jetzt einwandfrei laufen. Alle Ausgaben sollten ebenfalls protokolliert werden /tmp/crontest.log
, was bei der Fehlersuche helfen kann, falls es immer noch nicht funktioniert.