Em sudo crontab -e
eu tenho isso:
*/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 sem problemas, escrevendo a cada 2 minutos no test.log
arquivo.
Simplesmente não executará o backup.sh
script que contém isto:
#!/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
Posso ficar sudo sh dokuwiki_backup.sh
bem sem problemas. O script bash é chmod
ed 0777
e chown rki:rki
.
O que é que estou fazendo de errado?
Responder1
Se você adicionar seu cronjob via sudo crontab -e
, ele será executado como root
.
Não há necessidade de
sudo
usar:*/5 * * * * /bin/sh /home/rki/docker-compose-stuff/dokuwiki/backups/dokuwiki_backup.sh
O diretório de trabalho padrão deve ser
root
s$HOME
, normalmente/root
. Você pode encontrar$name.tar.gz
lá. Mas é melhor usar caminhos absolutos, por exemplo:/bin/tar -zcvf "/home/rki/Backups/$name.tar.gz" /var/lib/docker/volumes/dokuwiki_data
Responder2
Para executar cronjobs com ambiente root completo, use este comando
*/5 * * * * su - root -c '/home/rki/docker-compose-stuff/dokuwiki/backups/dokuwiki_backup.sh'