내 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.log2분마다 파일에 기록하여 문제 없이 작동합니다 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 스크립트는 chmoded 0777chown 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

전체 루트 환경에서 cronjob을 실행하려면 이 명령을 사용하십시오.

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

관련 정보