En sudo crontab -e
tengo 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.log
funciona sin problemas, escribiendo cada 2 minutos en el test.log
archivo.
Simplemente no ejecutará el backup.sh
script 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.sh
bien sin problema. El script bash es chmod
ed 0777
y 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
sudo
utilizar:*/5 * * * * /bin/sh /home/rki/docker-compose-stuff/dokuwiki/backups/dokuwiki_backup.sh
El directorio de trabajo predeterminado debería ser
root
s$HOME
, por lo general/root
. Puedes encontrar$name.tar.gz
allí. 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'