为什么我的 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 脚本是chmoded0777chown 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

要使用完全 root 环境运行 cronjobs,请使用以下命令

*/5 * * * * su - root -c '/home/rki/docker-compose-stuff/dokuwiki/backups/dokuwiki_backup.sh'

相关内容