crontab -e で .sh スクリプトが実行されないのはなぜですか?

crontab -e で .sh スクリプトが実行されないのはなぜですか?

私は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 スクリプトはchmoded0777とですchown rki:rki

私が何を間違っているのでしょうか?

答え1

経由で cronjob を追加するとsudo crontab -e、 として実行されますroot

  • は必要ありませんsudo。以下を使用してください。

    */5 * * * * /bin/sh /home/rki/docker-compose-stuff/dokuwiki/backups/dokuwiki_backup.sh
    
  • デフォルトの作業ディレクトリはrootsなので$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'

関連情報