在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'