我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
运行没有任何问题,每 2 分钟写入一次test.log
文件。
它只是不会执行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
ed0777
和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
要使用完全 root 环境运行 cronjobs,请使用以下命令
*/5 * * * * su - root -c '/home/rki/docker-compose-stuff/dokuwiki/backups/dokuwiki_backup.sh'