為什麼我的 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'

相關內容