У sudo crontab -e
меня есть это:
*/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
работает без проблем, записывает в test.log
файл каждые 2 минуты.
Он просто не выполнит скрипт backup.sh
, в котором есть следующее:
#!/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
Я могу сделать sudo sh dokuwiki_backup.sh
это без проблем. Скрипт bash — chmod
ed 0777
и chown rki:rki
.
Что я делаю не так?
решение1
Если вы добавите cronjob через sudo crontab -e
, он будет запущен как root
.
Нет необходимости
sudo
, используйте:*/5 * * * * /bin/sh /home/rki/docker-compose-stuff/dokuwiki/backups/dokuwiki_backup.sh
Рабочий каталог по умолчанию должен быть
root
s$HOME
, поэтому обычно/root
. Вы можете найти$name.tar.gz
там. Но лучше использовать абсолютные пути, например:/bin/tar -zcvf "/home/rki/Backups/$name.tar.gz" /var/lib/docker/volumes/dokuwiki_data
решение2
Для запуска cronjobs в полной среде root используйте эту команду
*/5 * * * * su - root -c '/home/rki/docker-compose-stuff/dokuwiki/backups/dokuwiki_backup.sh'