Как добавить bash-скрипт в работу cron?

У меня есть скрипт backup.sh:

#!/bin/bash
sudo zip -r /home/jazuly/backup.zip /var/lib/automysqlbackup/
cd /home/jazuly/backupscript/cp2google/
php cp2google.php /home/jazuly/backup.zip
cd ~
rm -f /home/jazuly/backup.zip

Я сделал это исполняемым:

sudo chmod +x backup.sh

Затем я попытался отредактировать cronс crontab -e,

Я добавить:

# m h dom mon dow command
0 0 * * * /home/jazuly/backup.sh

но когда cron отправляет файл backup.zip на мою электронную почту, я загружаю и открываю его, и файл поврежден.

Если я запускаю скрипт вручную с помощью:

$ sudo chmod +x backup.sh 
$ ./backup.sh

Я могу открыть почтовый файл.

3 ответа

Решение

Вот шаги, как я это исправил:

  1. Изменить разрешение и владелец var/lib/automysqlbackup в 777 & jazuly.jazuly,
  2. Переместить все папки и файлы из backupscript/cp2google/ в home/jazuly,
  3. использование wait за каждое утверждение.
  4. Мой окончательный код:

    #!/bin/bash
    zip -r backup.zip /var/lib/automysqlbackup/
    wait
    php cp2google.php backup.zip
    wait
    rm -f backup.zip
    

    И мой cron:

    0 0 * * * /home/jazuly/backup.sh
    

    резервное копирование каждую полночь / день.

    Я не думаю, что есть необходимость писать полный путь, если .sh Файл находится в том же пути, с которым вы хотите выполнить.

Вам нужно будет использовать полный путь в любом скрипте cron. Так что не делай cd ~дай вместо cd /home/jazuly

Для дальнейшей отладки вы также можете перенаправить вывод скрипта cron в файл с помощью /home/jazuly/backup.sh 1> /home/jazuly/log.txt 2> /home/jazuly/err.txt

Итак вся команда:

# m h dom mon dow command
0 0 * * * /bin/bash /home/jazuly/backup.sh 1> /home/jazuly/log.txt 2> /home/jazuly/err.txt

Попробуйте использовать полные пути

#!/bin/bash
/usr/bin/zip -r /home/jazuly/backup.zip /var/lib/automysqlbackup/
/usr/bin/php /home/jazuly/backupscript/cp2google/cp2google.php /home/jazuly/backup.zip
rm -f /home/jazuly/backup.zip

И добавить /bin/bash в хрон

# m h dom mon dow command
0 0 * * * /bin/bash /home/jazuly/backup.sh

И проверьте разрешения для файлов backup.zip, backupdatabaseterbaru-c771cd4f4fcf.p12

Другие вопросы по тегам