私は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
完全なルート環境でcronジョブを実行するには、このコマンドを使用します。
*/5 * * * * su - root -c '/home/rki/docker-compose-stuff/dokuwiki/backups/dokuwiki_backup.sh'