¿Por qué mi crontab -e no ejecuta el script .sh?

¿Por qué mi crontab -e no ejecuta el script .sh?

En sudo crontab -etengo esto:

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

*/2 * * * * date >> /home/rki/test.logfunciona sin problemas, escribiendo cada 2 minutos en el test.logarchivo.

Simplemente no ejecutará el backup.shscript que tiene esto:

#!/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

Puedo hacerlo sudo sh dokuwiki_backup.shbien sin problema. El script bash es chmoded 0777y chown rki:rki.

¿Qué es eso que estoy haciendo mal?

Respuesta1

Si agrega su cronjob a través de sudo crontab -e, se ejecutará como root.

  • No es necesario sudoutilizar:

    */5 * * * * /bin/sh /home/rki/docker-compose-stuff/dokuwiki/backups/dokuwiki_backup.sh
    
  • El directorio de trabajo predeterminado debería ser roots $HOME, por lo general /root. Puedes encontrar $name.tar.gzallí. Pero es mejor usar rutas absolutas, por ejemplo:

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

Respuesta2

Para ejecutar cronjobs con un entorno raíz completo, utilice este comando

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

información relacionada