Warum führt mein crontab -e das .sh-Skript nicht aus?

Warum führt mein crontab -e das .sh-Skript nicht aus?

Ich sudo crontab -ehabe Folgendes:

*/2 * * * * date >> /home/rki/test.log
*/5 * * * * sudo sh /home/rki/docker-compose-stuff/dokuwiki/backups/dokuwiki_backup.sh

*/2 * * * * date >> /home/rki/test.logfunktioniert problemlos, schreibt alle 2 Minuten in die test.logDatei.

backup.shDas Skript mit folgendem Inhalt wird einfach nicht ausgeführt :

#!/bin/bash
# Remove previous backups
#sudo rm dokuwiki-backup*.tar.gz

# Set backup name
name=dokuwiki-backup_$(date '+%Y-%m-%d-%H%M%S')

# Backup stuff
/bin/tar -zcvf "$name.tar.gz" /var/lib/docker/volumes/dokuwiki_data

Ich komme sudo sh dokuwiki_backup.shproblemlos damit zurecht. Das Bash-Skript ist chmoded 0777und chown rki:rki.

Was mache ich falsch?

Antwort1

Wenn Sie Ihren Cronjob über hinzufügen sudo crontab -e, wird er als ausgeführt root.

  • Nicht erforderlich sudo. Verwenden Sie:

    */5 * * * * /bin/sh /home/rki/docker-compose-stuff/dokuwiki/backups/dokuwiki_backup.sh
    
  • Das Standardarbeitsverzeichnis sollte roots sein $HOME, also normalerweise /root. Sie können $name.tar.gzes dort finden. Aber besser ist es, absolute Pfade zu verwenden, z. B.:

    /bin/tar -zcvf "/home/rki/Backups/$name.tar.gz" /var/lib/docker/volumes/dokuwiki_data
    

Antwort2

Um Cronjobs mit vollständiger Root-Umgebung auszuführen, verwenden Sie diesen Befehl

*/5 * * * * su - root -c '/home/rki/docker-compose-stuff/dokuwiki/backups/dokuwiki_backup.sh'

verwandte Informationen