Ubuntu 12.04 не работает с одной из моих команд crontab & hellip; есть идеи?

В моем файле crontab (sudo crontab -e) у меня есть следующие команды:

*/1 * * * * wget -q -O /dev/null http://help.mysite.com/inc/mail/hesk_pop3.php
0 7 * * * bash -c "/home/backup/backupscript.sh"

Первая строка выполняется и работает правильно, но вторая строка по какой-то причине не работает. Однако, если я запускаю скрипт через терминал (./backupscript.sh), он работает правильно.

Файл backupscript.sh принадлежит root: root и имеет 755 разрешений.

В этом файле содержится следующий фрагмент кода:

#!/bin/bash

/usr/bin/mysqldump -u root -wordpresspassword wordpressusername | /bin/gzip > /home/backup/mysql/wordpress_`date +%m-%d-%Y_%T`.sql.gz
/usr/bin/mysqldump -u root -heskpassword heskusername | /bin/gzip > /home/backup/mysql/hesk_`date +%m-%d-%Y_%T`.sql.gz
/bin/tar cvzf /home/backup/wordpress/wordpress_`date +%m-%d-%Y_%T`.tar.gz /var/www/wordpress/
/bin/tar cvzf /home/backup/hesk/hesk_`date +%m-%d-%Y_%T`.tar.gz /var/www/hesk/
/usr/bin/s3cmd sync -r -P /home/backup/ s3://backups.mysite/
find /home/backup/ -mtime +7 -type f -exec rm {} \;

Сценарий в основном создает резервные копии наших баз данных MySQL и сжимает их, создает резервные копии наших сайтов Apache и сжимает их, копирует эти файлы в Amazon S3 и затем выполняет очистку на сервере.

Что мне здесь не хватает? Я пробовал несколько вещей, таких как переключение с bash на shell, но пока ничего не получалось.

4
задан 25 February 2013 в 03:33

2 ответа

Одним из способов решения этой проблемы является использование сценария оболочки:

for (( ; ;))
do
   sleep 86400
   wget -q -O http://help.mysite.com/inc/mail/hesk_pop3.php
   /bin/sh /home/backup/backupscript.sh
done

В приведенном выше сценарии я использовал sleep 86400 (это эквивалентно одному дню в секундах) Вы можете настроить свой интервал соответственно.

Если вы хотите запустить на каком-нибудь сервере / десктопе протоколирование с использованием ssh, запустите / запустите этот скрипт как фоновый процесс.

0
ответ дан 25 February 2013 в 03:33

Общие советы по отладке crontab:

  1. ловят вывод.
    • Либо перенаправить его в файл, например, { command1; command2; } &>/tmp/joboutput
    • или убедитесь, что crond отправляет вывод в виде электронной почты на ваш почтовый ящик, установив MAILTO=user@example.com в вашем crontab.
  2. Среда оболочки процесса, вызванного crontab, отличается от среды, в которой запущен тот же процесс в терминале.
    Убедитесь, что все необходимые переменные среды указаны в crontab.
  3. % имеет особое значение в crontab (читай внимательно man 5 crontab: -)

    Вся командная часть строка, до новой строки или символа%, будет выполнена / bin / sh или оболочкой, указанной в переменной SHELL файла crontab. Знаки процента (%) в команде, если они не экранированы обратной косой чертой (), будут изменены на символы новой строки, и все данные после первого% будут отправлены команде в качестве стандартного ввода. Невозможно разделить одну командную строку на несколько строк, как, например, завершающий символ оболочки "\".

0
ответ дан 25 February 2013 в 03:33

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

Похожие вопросы: