Настройка еженедельного резервного копирования CRON

Если вы получите экран входа в систему, когда ваш компьютер просыпается, простым решением будет добавить service bluetooth start к вашему ~/.profile, поскольку GNOME будет выполнять команды в этом файле при входе в систему. Если вы не используете GNOME или если вы не получите экран входа в систему, вы можете добавить файл в /etc/pm/sleep.d с последующими строками в нем

#!/bin/sh

case "$1" in
    thaw)
        service bluetooth start        
        ;;  
esac

, этот скрипт запустит службу bluetooth т.е. bluetoothd, когда ваша система возвращается из спящего режима / спящего режима

7
задан 4 March 2011 в 20:40

40 ответов

Я изменил местоположение файла bash на /usr/local/mysqlbackup.sh. После этого я сделал следующие команды в файле:

cd /usr/local/
sudo chown [username] mysqlbackup.sh
sudo chmod -rwx mysqlbackup.sh
sudo chmod go= mysqlbackup.sh

, после чего я прекратил использовать ~$ crontab -e в качестве команды для редактирования задания cron и начал использовать sudo nano /etc/crontab, где я создал новую строку задания со следующим:

00 20    * * 5  root  /usr/local/mysqlbackup.sh

Вместо этого я начал использовать этот файл, потому что он позволил мне сказать, какой пользователь должен его выполнить. После этих изменений выполняется работа cron.

1
ответ дан 25 May 2018 в 22:42

Я изменил местоположение файла bash на /usr/local/mysqlbackup.sh. После этого я сделал следующие команды в файле:

cd /usr/local/ sudo chown [username] mysqlbackup.sh sudo chmod -rwx mysqlbackup.sh sudo chmod go= mysqlbackup.sh

, после чего я прекратил использовать ~$ crontab -e в качестве команды для редактирования задания cron и начал использовать sudo nano /etc/crontab, где я создал новую строку задания со следующим:

00 20 * * 5 root /usr/local/mysqlbackup.sh

Вместо этого я начал использовать этот файл, потому что он позволил мне сказать, какой пользователь должен его выполнить. После этих изменений выполняется работа cron.

1
ответ дан 25 July 2018 в 22:24

Я изменил местоположение файла bash на /usr/local/mysqlbackup.sh. После этого я сделал следующие команды в файле:

cd /usr/local/ sudo chown [username] mysqlbackup.sh sudo chmod -rwx mysqlbackup.sh sudo chmod go= mysqlbackup.sh

, после чего я прекратил использовать ~$ crontab -e в качестве команды для редактирования задания cron и начал использовать sudo nano /etc/crontab, где я создал новую строку задания со следующим:

00 20 * * 5 root /usr/local/mysqlbackup.sh

Вместо этого я начал использовать этот файл, потому что он позволил мне сказать, какой пользователь должен его выполнить. После этих изменений выполняется работа cron.

1
ответ дан 26 July 2018 в 21:15

Я изменил местоположение файла bash на /usr/local/mysqlbackup.sh. После этого я сделал следующие команды в файле:

cd /usr/local/ sudo chown [username] mysqlbackup.sh sudo chmod -rwx mysqlbackup.sh sudo chmod go= mysqlbackup.sh

, после чего я прекратил использовать ~$ crontab -e в качестве команды для редактирования задания cron и начал использовать sudo nano /etc/crontab, где я создал новую строку задания со следующим:

00 20 * * 5 root /usr/local/mysqlbackup.sh

Вместо этого я начал использовать этот файл, потому что он позволил мне сказать, какой пользователь должен его выполнить. После этих изменений выполняется работа cron.

1
ответ дан 31 July 2018 в 12:19

Я изменил местоположение файла bash на /usr/local/mysqlbackup.sh. После этого я сделал следующие команды в файле:

cd /usr/local/ sudo chown [username] mysqlbackup.sh sudo chmod -rwx mysqlbackup.sh sudo chmod go= mysqlbackup.sh

, после чего я прекратил использовать ~$ crontab -e в качестве команды для редактирования задания cron и начал использовать sudo nano /etc/crontab, где я создал новую строку задания со следующим:

00 20 * * 5 root /usr/local/mysqlbackup.sh

Вместо этого я начал использовать этот файл, потому что он позволил мне сказать, какой пользователь должен его выполнить. После этих изменений выполняется работа cron.

1
ответ дан 2 August 2018 в 03:51

Я изменил местоположение файла bash на /usr/local/mysqlbackup.sh. После этого я сделал следующие команды в файле:

cd /usr/local/ sudo chown [username] mysqlbackup.sh sudo chmod -rwx mysqlbackup.sh sudo chmod go= mysqlbackup.sh

, после чего я прекратил использовать ~$ crontab -e в качестве команды для редактирования задания cron и начал использовать sudo nano /etc/crontab, где я создал новую строку задания со следующим:

00 20 * * 5 root /usr/local/mysqlbackup.sh

Вместо этого я начал использовать этот файл, потому что он позволил мне сказать, какой пользователь должен его выполнить. После этих изменений выполняется работа cron.

1
ответ дан 4 August 2018 в 19:54

Я изменил местоположение файла bash на /usr/local/mysqlbackup.sh . После этого я сделал следующие команды в файле:

  cd / usr / local / sudo chown [имя_пользователя] mysqlbackup.sh sudo chmod -rwx mysqlbackup.sh sudo chmod go = mysqlbackup.sh   

, тогда я прекратил использовать ~ $ crontab -e в качестве команды для редактирования задания cron и начал использовать sudo nano / etc / crontab , где я создал новую строку задания со следующим:

  00 20 * * 5 root /usr/local/mysqlbackup.sh  

Я начал использовать этот файл вместо этого, потому что он позволил мне сказать, какой пользователь должен его выполнить. После этих изменений работает работа cron.

1
ответ дан 6 August 2018 в 03:57

Я изменил местоположение файла bash на /usr/local/mysqlbackup.sh . После этого я сделал следующие команды в файле:

  cd / usr / local / sudo chown [имя_пользователя] mysqlbackup.sh sudo chmod -rwx mysqlbackup.sh sudo chmod go = mysqlbackup.sh   

, тогда я прекратил использовать ~ $ crontab -e в качестве команды для редактирования задания cron и начал использовать sudo nano / etc / crontab , где я создал новую строку задания со следующим:

  00 20 * * 5 root /usr/local/mysqlbackup.sh  

Я начал использовать этот файл вместо этого, потому что он позволил мне сказать, какой пользователь должен его выполнить. После этих изменений работает работа cron.

1
ответ дан 7 August 2018 в 21:55

Я изменил местоположение файла bash на /usr/local/mysqlbackup.sh . После этого я сделал следующие команды в файле:

  cd / usr / local / sudo chown [имя_пользователя] mysqlbackup.sh sudo chmod -rwx mysqlbackup.sh sudo chmod go = mysqlbackup.sh   

, тогда я прекратил использовать ~ $ crontab -e в качестве команды для редактирования задания cron и начал использовать sudo nano / etc / crontab , где я создал новую строку задания со следующим:

  00 20 * * 5 root /usr/local/mysqlbackup.sh  

Я начал использовать этот файл вместо этого, потому что он позволил мне сказать, какой пользователь должен его выполнить. После этих изменений работает работа cron.

1
ответ дан 10 August 2018 в 10:10

Я изменил местоположение файла bash на /usr/local/mysqlbackup.sh . После этого я сделал следующие команды в файле:

  cd / usr / local / sudo chown [имя_пользователя] mysqlbackup.sh sudo chmod -rwx mysqlbackup.sh sudo chmod go = mysqlbackup.sh   

, тогда я прекратил использовать ~ $ crontab -e в качестве команды для редактирования задания cron и начал использовать sudo nano / etc / crontab , где я создал новую строку задания со следующим:

  00 20 * * 5 root /usr/local/mysqlbackup.sh  

Я начал использовать этот файл вместо этого, потому что он позволил мне сказать, какой пользователь должен его выполнить. После этих изменений работает работа cron.

1
ответ дан 13 August 2018 в 16:31

Несколько точек, которые нужно сделать:

Почему вы используете timestrings в сценариях /etc/cron.weekly/? Вы должны использовать только исполняемые скрипты. Вам не нужно им наступать или что-то еще. Это просто дублирует их работу. Посмотрите на /etc/cron.daily/apt для примера того, о чем я говорю. Это простой сценарий. По словам пользователя, файл не может иметь расширение. Нечетный, я знаю, поэтому переименуйте его:
sudo mv /etc/cron.weekly/mysqlbackup{.sh,}
Вам нужно запустить sudo chmod +x /etc/cron.weekly/mysqlbackup, чтобы сделать его исполняемым. Затем вы можете протестировать его, запустив его, используя этот путь. Если вы оставите его в /etc/cron.weekly/, скрипт будет запущен с правами root. Ни одна из ваших ~/ ссылок не будет работать. Используйте полные пути. Я бы предположил, что после того, как вы mkdir вы cd в него, и это уменьшит огромные пути в последующих командах. Если вам нужны сгенерированные файлы, принадлежащие вашему пользователю, сделайте свой скрипт chown своим пользователям, когда это будет сделано для резервного копирования. Я не вижу причин, по которым любой из них можно было бы запустить с помощью root. Вы можете использовать скрипт в своем домашнем каталоге и просто использовать стандартный crontab -e, чтобы добавить свое правило и запустить его. Он все еще должен быть исполняемым, и я по-прежнему рекомендую вам использовать полные пути, но он немного упрощает разрешения.
7
ответ дан 25 May 2018 в 22:42
  • 1
    sudo chmod +x /etc/cron.weekly/mysqlbackup.sh все равно не будет делать скрипт еженедельно. Cron игнорирует файлы с расширениями в этих каталогах. И вообще, сценарии не должны иметь расширений. – geirha 5 March 2011 в 16:32
  • 2
    @geirha Это очень важный комментарий! Это где-то документировано? – Limited Atonement 22 August 2013 в 19:30
  • 3
    @LimitedAtonement. Если вы посмотрите на значение по умолчанию /etc/crontab, run-parts используется для запуска заданий в /etc/cron.{daily,weekly,monthly}, если anacron «не установлен». run-parts (8) в свою очередь объясняет, какие символы разрешены в именах файлов. Я считаю, что основной причиной этого является возможность легко отключить работу, просто переименовав jobname в jobname.disabled или аналогичную. – geirha 22 August 2013 в 19:53

День недели - это числовое поле, поэтому он не работает, пытаясь разобрать «fri». Измените это значение на 5 (воскресенье равно 0). edit: Я вижу, что OP был обновлен, чтобы исправить это, и все еще есть проблемы, но они адресованы в других ответах.

Формат cron хорошо документирован в Интернете, поэтому я обычно заканчиваю проверку документов до написав новое задание cron: http://en.wikipedia.org/wiki/Cron

Кроме того, убедитесь, что вы используете crontab -e (или аналогичный) для редактирования вашего cron-файла, который сделает уверен, что он снова обрабатывается.

2
ответ дан 25 May 2018 в 22:42
  • 1
    fri и 5 являются действительными. Не все реализации cron позволяют использовать аббревиатуру вместо числа в будний день, но cron в Ubuntu делает. См. [F1] – geirha 5 March 2011 в 17:55

Вы можете попытаться перенаправить ошибки из вашей линии cron в файл, например:

/usr/local/mysqlbackup.sh &>/var/log/mysqlcron.log

Это должно поймать как stdout, так и stderr и сообщить, если есть синтаксическая ошибка и т. д.

Примечание: если вы делаете резервную копию живой базы данных, вы должны использовать определенные утилиты для резервного копирования, например mysqldump, вместо использования общей команды tar. Причина в том, что если файлы внутри / var / lib / mysql / изменяются во время выполнения tar, вы можете получить несогласованное изображение базы данных.

0
ответ дан 25 May 2018 в 22:42
  • 1
    cron запускает работу с sh, если вы специально не указали это иначе, а &> не является sh-синтаксисом. >file 2>&1 будет работать как с sh, так и с bash. – geirha 5 March 2011 в 19:01
  • 2
    Правда, хорошая точка. – bitwelder 16 March 2011 в 21:17

Вы можете попытаться перенаправить ошибки из вашей линии cron в файл, например:

/usr/local/mysqlbackup.sh &>/var/log/mysqlcron.log

Это должно поймать как stdout, так и stderr и сообщить, если есть синтаксическая ошибка и т. д.

Примечание: если вы делаете резервную копию живой базы данных, вы должны использовать определенные утилиты для резервного копирования, например mysqldump, вместо использования общей команды tar. Причина в том, что если файлы внутри / var / lib / mysql / изменяются во время выполнения tar, вы можете получить несогласованное изображение базы данных.

0
ответ дан 25 July 2018 в 22:24
  • 1
    cron запускает работу с sh, если вы специально не указали это иначе, а &> не является sh-синтаксисом. >file 2>&1 будет работать как с sh, так и с bash. – geirha 5 March 2011 в 19:01
  • 2
    Правда, хорошая точка. – bitwelder 16 March 2011 в 21:17

День недели - это числовое поле, поэтому он не работает, пытаясь разобрать «fri». Измените это значение на 5 (воскресенье равно 0). edit: Я вижу, что OP был обновлен, чтобы исправить это, и все еще есть проблемы, но они адресованы в других ответах.

Формат cron хорошо документирован в Интернете, поэтому я обычно заканчиваю проверку документов до написав новое задание cron: http://en.wikipedia.org/wiki/Cron

Кроме того, убедитесь, что вы используете crontab -e (или аналогичный) для редактирования вашего cron-файла, который сделает уверен, что он снова обрабатывается.

2
ответ дан 25 July 2018 в 22:24
  • 1
    fri и 5 являются действительными. Не все реализации cron позволяют использовать аббревиатуру вместо числа в будний день, но cron в Ubuntu делает. См. [F1] – geirha 5 March 2011 в 17:55

Несколько точек, которые нужно сделать:

Почему вы используете timestrings в сценариях /etc/cron.weekly/? Вы должны использовать только исполняемые скрипты. Вам не нужно им наступать или что-то еще. Это просто дублирует их работу. Посмотрите на /etc/cron.daily/apt для примера того, о чем я говорю. Это простой сценарий. По словам пользователя, файл не может иметь расширение. Нечетный, я знаю, поэтому переименуйте его: sudo mv /etc/cron.weekly/mysqlbackup{.sh,} Вам нужно запустить sudo chmod +x /etc/cron.weekly/mysqlbackup, чтобы сделать его исполняемым. Затем вы можете протестировать его, запустив его, используя этот путь. Если вы оставите его в /etc/cron.weekly/, скрипт будет запущен с правами root. Ни одна из ваших ~/ ссылок не будет работать. Используйте полные пути. Я бы предположил, что после того, как вы mkdir вы cd в него, и это уменьшит огромные пути в последующих командах. Если вам нужны сгенерированные файлы, принадлежащие вашему пользователю, сделайте свой скрипт chown своим пользователям, когда это будет сделано для резервного копирования. Я не вижу причин, по которым любой из них можно было бы запустить с помощью root. Вы можете использовать скрипт в своем домашнем каталоге и просто использовать стандартный crontab -e, чтобы добавить свое правило и запустить его. Он все еще должен быть исполняемым, и я по-прежнему рекомендую вам использовать полные пути, но он немного упрощает разрешения.
7
ответ дан 25 July 2018 в 22:24
  • 1
    sudo chmod +x /etc/cron.weekly/mysqlbackup.sh все равно не будет делать скрипт еженедельно. Cron игнорирует файлы с расширениями в этих каталогах. И вообще, сценарии не должны иметь расширений. – geirha 5 March 2011 в 16:32
  • 2
    @geirha Это очень важный комментарий! Это где-то документировано? – Limited Atonement 22 August 2013 в 19:30
  • 3
    @LimitedAtonement. Если вы посмотрите на значение по умолчанию /etc/crontab, run-parts используется для запуска заданий в /etc/cron.{daily,weekly,monthly}, если anacron «не установлен». run-parts (8) в свою очередь объясняет, какие символы разрешены в именах файлов. Я считаю, что основной причиной этого является возможность легко отключить работу, просто переименовав jobname в jobname.disabled или аналогичную. – geirha 22 August 2013 в 19:53

Вы можете попытаться перенаправить ошибки из вашей линии cron в файл, например:

/usr/local/mysqlbackup.sh &>/var/log/mysqlcron.log

Это должно поймать как stdout, так и stderr и сообщить, если есть синтаксическая ошибка и т. д.

Примечание: если вы делаете резервную копию живой базы данных, вы должны использовать определенные утилиты для резервного копирования, например mysqldump, вместо использования общей команды tar. Причина в том, что если файлы внутри / var / lib / mysql / изменяются во время выполнения tar, вы можете получить несогласованное изображение базы данных.

0
ответ дан 26 July 2018 в 21:15
  • 1
    cron запускает работу с sh, если вы специально не указали это иначе, а &> не является sh-синтаксисом. >file 2>&1 будет работать как с sh, так и с bash. – geirha 5 March 2011 в 19:01
  • 2
    Правда, хорошая точка. – bitwelder 16 March 2011 в 21:17

День недели - это числовое поле, поэтому он не работает, пытаясь разобрать «fri». Измените это значение на 5 (воскресенье равно 0). edit: Я вижу, что OP был обновлен, чтобы исправить это, и все еще есть проблемы, но они адресованы в других ответах.

Формат cron хорошо документирован в Интернете, поэтому я обычно заканчиваю проверку документов до написав новое задание cron: http://en.wikipedia.org/wiki/Cron

Кроме того, убедитесь, что вы используете crontab -e (или аналогичный) для редактирования вашего cron-файла, который сделает уверен, что он снова обрабатывается.

2
ответ дан 26 July 2018 в 21:15
  • 1
    fri и 5 являются действительными. Не все реализации cron позволяют использовать аббревиатуру вместо числа в будний день, но cron в Ubuntu делает. См. [F1] – geirha 5 March 2011 в 17:55

Несколько точек, которые нужно сделать:

Почему вы используете timestrings в сценариях /etc/cron.weekly/? Вы должны использовать только исполняемые скрипты. Вам не нужно им наступать или что-то еще. Это просто дублирует их работу. Посмотрите на /etc/cron.daily/apt для примера того, о чем я говорю. Это простой сценарий. По словам пользователя, файл не может иметь расширение. Нечетный, я знаю, поэтому переименуйте его: sudo mv /etc/cron.weekly/mysqlbackup{.sh,} Вам нужно запустить sudo chmod +x /etc/cron.weekly/mysqlbackup, чтобы сделать его исполняемым. Затем вы можете протестировать его, запустив его, используя этот путь. Если вы оставите его в /etc/cron.weekly/, скрипт будет запущен с правами root. Ни одна из ваших ~/ ссылок не будет работать. Используйте полные пути. Я бы предположил, что после того, как вы mkdir вы cd в него, и это уменьшит огромные пути в последующих командах. Если вам нужны сгенерированные файлы, принадлежащие вашему пользователю, сделайте свой скрипт chown своим пользователям, когда это будет сделано для резервного копирования. Я не вижу причин, по которым любой из них можно было бы запустить с помощью root. Вы можете использовать скрипт в своем домашнем каталоге и просто использовать стандартный crontab -e, чтобы добавить свое правило и запустить его. Он все еще должен быть исполняемым, и я по-прежнему рекомендую вам использовать полные пути, но он немного упрощает разрешения.
7
ответ дан 26 July 2018 в 21:15
  • 1
    sudo chmod +x /etc/cron.weekly/mysqlbackup.sh все равно не будет делать скрипт еженедельно. Cron игнорирует файлы с расширениями в этих каталогах. И вообще, сценарии не должны иметь расширений. – geirha 5 March 2011 в 16:32
  • 2
    @geirha Это очень важный комментарий! Это где-то документировано? – Limited Atonement 22 August 2013 в 19:30
  • 3
    @LimitedAtonement. Если вы посмотрите на значение по умолчанию /etc/crontab, run-parts используется для запуска заданий в /etc/cron.{daily,weekly,monthly}, если anacron «не установлен». run-parts (8) в свою очередь объясняет, какие символы разрешены в именах файлов. Я считаю, что основной причиной этого является возможность легко отключить работу, просто переименовав jobname в jobname.disabled или аналогичную. – geirha 22 August 2013 в 19:53

Вы можете попытаться перенаправить ошибки из вашей линии cron в файл, например:

/usr/local/mysqlbackup.sh &>/var/log/mysqlcron.log

Это должно поймать как stdout, так и stderr и сообщить, если есть синтаксическая ошибка и т. д.

Примечание: если вы делаете резервную копию живой базы данных, вы должны использовать определенные утилиты для резервного копирования, например mysqldump, вместо использования общей команды tar. Причина в том, что если файлы внутри / var / lib / mysql / изменяются во время выполнения tar, вы можете получить несогласованное изображение базы данных.

0
ответ дан 31 July 2018 в 12:19
  • 1
    cron запускает работу с sh, если вы специально не указали это иначе, а &> не является sh-синтаксисом. >file 2>&1 будет работать как с sh, так и с bash. – geirha 5 March 2011 в 19:01
  • 2
    Правда, хорошая точка. – bitwelder 16 March 2011 в 21:17

День недели - это числовое поле, поэтому он не работает, пытаясь разобрать «fri». Измените это значение на 5 (воскресенье равно 0). edit: Я вижу, что OP был обновлен, чтобы исправить это, и все еще есть проблемы, но они адресованы в других ответах.

Формат cron хорошо документирован в Интернете, поэтому я обычно заканчиваю проверку документов до написав новое задание cron: http://en.wikipedia.org/wiki/Cron

Кроме того, убедитесь, что вы используете crontab -e (или аналогичный) для редактирования вашего cron-файла, который сделает уверен, что он снова обрабатывается.

2
ответ дан 31 July 2018 в 12:19
  • 1
    fri и 5 являются действительными. Не все реализации cron позволяют использовать аббревиатуру вместо числа в будний день, но cron в Ubuntu делает. См. [F1] – geirha 5 March 2011 в 17:55

Несколько точек, которые нужно сделать:

Почему вы используете timestrings в сценариях /etc/cron.weekly/? Вы должны использовать только исполняемые скрипты. Вам не нужно им наступать или что-то еще. Это просто дублирует их работу. Посмотрите на /etc/cron.daily/apt для примера того, о чем я говорю. Это простой сценарий. По словам пользователя, файл не может иметь расширение. Нечетный, я знаю, поэтому переименуйте его: sudo mv /etc/cron.weekly/mysqlbackup{.sh,} Вам нужно запустить sudo chmod +x /etc/cron.weekly/mysqlbackup, чтобы сделать его исполняемым. Затем вы можете протестировать его, запустив его, используя этот путь. Если вы оставите его в /etc/cron.weekly/, скрипт будет запущен с правами root. Ни одна из ваших ~/ ссылок не будет работать. Используйте полные пути. Я бы предположил, что после того, как вы mkdir вы cd в него, и это уменьшит огромные пути в последующих командах. Если вам нужны сгенерированные файлы, принадлежащие вашему пользователю, сделайте свой скрипт chown своим пользователям, когда это будет сделано для резервного копирования. Я не вижу причин, по которым любой из них можно было бы запустить с помощью root. Вы можете использовать скрипт в своем домашнем каталоге и просто использовать стандартный crontab -e, чтобы добавить свое правило и запустить его. Он все еще должен быть исполняемым, и я по-прежнему рекомендую вам использовать полные пути, но он немного упрощает разрешения.
7
ответ дан 31 July 2018 в 12:19
  • 1
    sudo chmod +x /etc/cron.weekly/mysqlbackup.sh все равно не будет делать скрипт еженедельно. Cron игнорирует файлы с расширениями в этих каталогах. И вообще, сценарии не должны иметь расширений. – geirha 5 March 2011 в 16:32
  • 2
    @geirha Это очень важный комментарий! Это где-то документировано? – Limited Atonement 22 August 2013 в 19:30
  • 3
    @LimitedAtonement. Если вы посмотрите на значение по умолчанию /etc/crontab, run-parts используется для запуска заданий в /etc/cron.{daily,weekly,monthly}, если anacron «не установлен». run-parts (8) в свою очередь объясняет, какие символы разрешены в именах файлов. Я считаю, что основной причиной этого является возможность легко отключить работу, просто переименовав jobname в jobname.disabled или аналогичную. – geirha 22 August 2013 в 19:53

Вы можете попытаться перенаправить ошибки из вашей линии cron в файл, например:

/usr/local/mysqlbackup.sh &>/var/log/mysqlcron.log

Это должно поймать как stdout, так и stderr и сообщить, если есть синтаксическая ошибка и т. д.

Примечание: если вы делаете резервную копию живой базы данных, вы должны использовать определенные утилиты для резервного копирования, например mysqldump, вместо использования общей команды tar. Причина в том, что если файлы внутри / var / lib / mysql / изменяются во время выполнения tar, вы можете получить несогласованное изображение базы данных.

0
ответ дан 2 August 2018 в 03:51
  • 1
    cron запускает работу с sh, если вы специально не указали это иначе, а &> не является sh-синтаксисом. >file 2>&1 будет работать как с sh, так и с bash. – geirha 5 March 2011 в 19:01
  • 2
    Правда, хорошая точка. – bitwelder 16 March 2011 в 21:17

День недели - это числовое поле, поэтому он не работает, пытаясь разобрать «fri». Измените это значение на 5 (воскресенье равно 0). edit: Я вижу, что OP был обновлен, чтобы исправить это, и все еще есть проблемы, но они адресованы в других ответах.

Формат cron хорошо документирован в Интернете, поэтому я обычно заканчиваю проверку документов до написав новое задание cron: http://en.wikipedia.org/wiki/Cron

Кроме того, убедитесь, что вы используете crontab -e (или аналогичный) для редактирования вашего cron-файла, который сделает уверен, что он снова обрабатывается.

2
ответ дан 2 August 2018 в 03:51
  • 1
    fri и 5 являются действительными. Не все реализации cron позволяют использовать аббревиатуру вместо числа в будний день, но cron в Ubuntu делает. См. [F1] – geirha 5 March 2011 в 17:55

Несколько точек, которые нужно сделать:

Почему вы используете timestrings в сценариях /etc/cron.weekly/? Вы должны использовать только исполняемые скрипты. Вам не нужно им наступать или что-то еще. Это просто дублирует их работу. Посмотрите на /etc/cron.daily/apt для примера того, о чем я говорю. Это простой сценарий. По словам пользователя, файл не может иметь расширение. Нечетный, я знаю, поэтому переименуйте его: sudo mv /etc/cron.weekly/mysqlbackup{.sh,} Вам нужно запустить sudo chmod +x /etc/cron.weekly/mysqlbackup, чтобы сделать его исполняемым. Затем вы можете протестировать его, запустив его, используя этот путь. Если вы оставите его в /etc/cron.weekly/, скрипт будет запущен с правами root. Ни одна из ваших ~/ ссылок не будет работать. Используйте полные пути. Я бы предположил, что после того, как вы mkdir вы cd в него, и это уменьшит огромные пути в последующих командах. Если вам нужны сгенерированные файлы, принадлежащие вашему пользователю, сделайте свой скрипт chown своим пользователям, когда это будет сделано для резервного копирования. Я не вижу причин, по которым любой из них можно было бы запустить с помощью root. Вы можете использовать скрипт в своем домашнем каталоге и просто использовать стандартный crontab -e, чтобы добавить свое правило и запустить его. Он все еще должен быть исполняемым, и я по-прежнему рекомендую вам использовать полные пути, но он немного упрощает разрешения.
7
ответ дан 2 August 2018 в 03:51
  • 1
    sudo chmod +x /etc/cron.weekly/mysqlbackup.sh все равно не будет делать скрипт еженедельно. Cron игнорирует файлы с расширениями в этих каталогах. И вообще, сценарии не должны иметь расширений. – geirha 5 March 2011 в 16:32
  • 2
    @geirha Это очень важный комментарий! Это где-то документировано? – Limited Atonement 22 August 2013 в 19:30
  • 3
    @LimitedAtonement. Если вы посмотрите на значение по умолчанию /etc/crontab, run-parts используется для запуска заданий в /etc/cron.{daily,weekly,monthly}, если anacron «не установлен». run-parts (8) в свою очередь объясняет, какие символы разрешены в именах файлов. Я считаю, что основной причиной этого является возможность легко отключить работу, просто переименовав jobname в jobname.disabled или аналогичную. – geirha 22 August 2013 в 19:53

Вы можете попытаться перенаправить ошибки из вашей линии cron в файл, например:

/usr/local/mysqlbackup.sh &>/var/log/mysqlcron.log

Это должно поймать как stdout, так и stderr и сообщить, если есть синтаксическая ошибка и т. д.

Примечание: если вы делаете резервную копию живой базы данных, вы должны использовать определенные утилиты для резервного копирования, например mysqldump, вместо использования общей команды tar. Причина в том, что если файлы внутри / var / lib / mysql / изменяются во время выполнения tar, вы можете получить несогласованное изображение базы данных.

0
ответ дан 4 August 2018 в 19:54
  • 1
    cron запускает работу с sh, если вы специально не указали это иначе, а &> не является sh-синтаксисом. >file 2>&1 будет работать как с sh, так и с bash. – geirha 5 March 2011 в 19:01
  • 2
    Правда, хорошая точка. – bitwelder 16 March 2011 в 21:17

День недели - это числовое поле, поэтому он не работает, пытаясь разобрать «fri». Измените это значение на 5 (воскресенье равно 0). edit: Я вижу, что OP был обновлен, чтобы исправить это, и все еще есть проблемы, но они адресованы в других ответах.

Формат cron хорошо документирован в Интернете, поэтому я обычно заканчиваю проверку документов до написав новое задание cron: http://en.wikipedia.org/wiki/Cron

Кроме того, убедитесь, что вы используете crontab -e (или аналогичный) для редактирования вашего cron-файла, который сделает уверен, что он снова обрабатывается.

2
ответ дан 4 August 2018 в 19:54
  • 1
    fri и 5 являются действительными. Не все реализации cron позволяют использовать аббревиатуру вместо числа в будний день, но cron в Ubuntu делает. См. [F1] – geirha 5 March 2011 в 17:55

Несколько точек, которые нужно сделать:

Почему вы используете timestrings в сценариях /etc/cron.weekly/? Вы должны использовать только исполняемые скрипты. Вам не нужно им наступать или что-то еще. Это просто дублирует их работу. Посмотрите на /etc/cron.daily/apt для примера того, о чем я говорю. Это простой сценарий. По словам пользователя, файл не может иметь расширение. Нечетный, я знаю, поэтому переименуйте его: sudo mv /etc/cron.weekly/mysqlbackup{.sh,} Вам нужно запустить sudo chmod +x /etc/cron.weekly/mysqlbackup, чтобы сделать его исполняемым. Затем вы можете протестировать его, запустив его, используя этот путь. Если вы оставите его в /etc/cron.weekly/, скрипт будет запущен с правами root. Ни одна из ваших ~/ ссылок не будет работать. Используйте полные пути. Я бы предположил, что после того, как вы mkdir вы cd в него, и это уменьшит огромные пути в последующих командах. Если вам нужны сгенерированные файлы, принадлежащие вашему пользователю, сделайте свой скрипт chown своим пользователям, когда это будет сделано для резервного копирования. Я не вижу причин, по которым любой из них можно было бы запустить с помощью root. Вы можете использовать скрипт в своем домашнем каталоге и просто использовать стандартный crontab -e, чтобы добавить свое правило и запустить его. Он все еще должен быть исполняемым, и я по-прежнему рекомендую вам использовать полные пути, но он немного упрощает разрешения.
7
ответ дан 4 August 2018 в 19:54
  • 1
    sudo chmod +x /etc/cron.weekly/mysqlbackup.sh все равно не будет делать скрипт еженедельно. Cron игнорирует файлы с расширениями в этих каталогах. И вообще, сценарии не должны иметь расширений. – geirha 5 March 2011 в 16:32
  • 2
    @geirha Это очень важный комментарий! Это где-то документировано? – Limited Atonement 22 August 2013 в 19:30
  • 3
    @LimitedAtonement. Если вы посмотрите на значение по умолчанию /etc/crontab, run-parts используется для запуска заданий в /etc/cron.{daily,weekly,monthly}, если anacron «не установлен». run-parts (8) в свою очередь объясняет, какие символы разрешены в именах файлов. Я считаю, что основной причиной этого является возможность легко отключить работу, просто переименовав jobname в jobname.disabled или аналогичную. – geirha 22 August 2013 в 19:53

Несколько точек для создания:

  • Почему вы используете timestrings в сценариях /etc/cron.weekly / ? Вы должны использовать только исполняемые скрипты. Вам не нужно им наступать или что-то еще. Это просто дублирует их работу. Посмотрите на /etc/cron.daily/apt для примера того, о чем я говорю. Это простой сценарий.
  • В комментарии от пользователя geirha файл не может иметь расширение. Нечетный, я знаю, поэтому переименуйте его: sudo mv /etc/cron.weekly/mysqlbackup{.sh,}
  • Вам нужно запустить sudo chmod + x / etc / cron.weekly / mysqlbackup , чтобы сделать его исполняемым. Затем вы можете проверить его, запустив его, используя этот путь.
  • Если вы оставите его в /etc/cron.weekly / , скрипт будет запущен с правами root. Ни одна из ваших ~ / ссылок не будет работать. Используйте полные пути. Я бы предположил, что после того, как вы сделаете mkdir , вы cd в него, и это уменьшит огромные пути в последующих командах. Если вам нужны сгенерированные файлы, которые будут принадлежать вашему пользователю, сделайте свой скрипт chown для своего пользователя, когда он будет создан. Я не вижу причин, по которым любой из них можно было бы запустить с помощью root. Вы можете использовать скрипт в своем домашнем каталоге и просто использовать стандартный crontab -e , чтобы добавить свое правило и запустить его. Он все еще должен быть исполняемым, и я по-прежнему рекомендую вам использовать полные пути, но он немного облегчает разрешения.
7
ответ дан 6 August 2018 в 03:57

День недели - это числовое поле, поэтому он не работает, пытаясь разобрать «fri». Измените это значение на 5 (воскресенье равно 0). edit: Я вижу, что OP был обновлен, чтобы исправить это, и все еще есть проблемы, но они адресованы в других ответах.

Формат cron хорошо документирован в Интернете, поэтому я обычно заканчиваю проверку документов до написав новое задание cron: http://en.wikipedia.org/wiki/Cron

Кроме того, убедитесь, что вы используете crontab -e (или подобное), чтобы отредактировать ваш cron-файл, который будет проверяться на повторную обработку.

2
ответ дан 6 August 2018 в 03:57

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

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