cron не выводит правильно?

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

Я поднял сервер Ubuntu 12.04.3. Этот сервер в основном работает под управлением MySQL. Я пытаюсь создать работу, которая будет выполнять ежедневный дамп.

Я вошел в систему как мой собственный пользователь, я создал исполняемый файл с именем / home / xyz / MySQL_Dumps / RunMySQLDump

-rwxrwxr-x  1    0 1000       1012 Jan 15 15:26 RunMySQLDump

crontab –l показывает:

12 * * * * /home/xyz/MySQL_Dumps/RunMySQLDump

Содержимое RunMySQLDump:

MyTimeNow=$(date +"%Y%m%e_%H%M")

mysqldump  --host=localhost --user=<user> --password=<password>--max_allowed_packet=1G --skip-opt --port=3306 --default-character-set=utf8 --single-transaction=TRUE --dump-date=TRUE --comments --flush-privileges --force --all-databases --result-file=/home/xyz/MySQL_Dumps/$MyTimeNow-X.dump

mysqldump  --host=localhost --user=<user> --password=<password> --max_allowed_packet=1G --skip-opt --port=3306 --default-character-set=utf8 --single-transaction=TRUE --dump-date=TRUE --comments --flush-privileges --force --all-databases --result-file=/home/xyz/MySQL_Dumps/$MyTimeNow-Y.dump

mysqldump  --host=localhost --user=<user> --password=<password> --max_allowed_packet=1G --skip-opt --port=3306 --default-character-set=utf8 --single-transaction=TRUE --dump-date=TRUE --comments --flush-privileges --force --all-databases --result-file=/home/xyz/MySQL_Dumps/$MyTimeNow-Z.dump

tar -cvf $MyTimeNow-all.tar $MyTimeNow*.dump
gzip *.tar
rm $MyTimeNow*.dump

Итак, вот проблема, с которой я сталкиваюсь. Когда я захожу на сервер под своим собственным пользователем «xyz» и вручную запускаю команду ./ RunMySQLDump , все работает нормально:

/ home / xyz / MySQL_Dumps

-rw-rw-r--  1 1000 1000 1042848433 Jan 15 14:03 20140114_0310-all.tar.gz
-rw-rw-r--  1 1000 1000 1065212917 Jan 15 15:18 20140115_1512-all.tar.gz
-rw-rw-r--  1 1000 1000 1065718672 Jan 15 16:28 20140115_1622-all.tar.gz
-rw-rw-r--  1 1000 1000 1077965846 Jan 16 11:42 20140116_1136-all.tar.gz

Однако, когда я позволяю cron запускать задание, я получаю следующее: / home / xyz (примечание: НЕ в / home / xyz / MySQL_Dumps И нет данных !)

-rw-rw-r--  1 xyz xyz     67 Jan 16 16:12 20140116_1612-all.tar.gz

Может кто-нибудь, пожалуйста, указать мне правильное направление?

Спасибо огромное!

0
задан 05.05.2020, 06:07

1 ответ

Когда вы работаете с ./RunMySQLDump, рабочий каталог скрипта - /home/xyz/MySQL_Dumps/, поэтому он работает.

Когда cron запускает скрипт, его рабочий каталог /home/xyz/ (ваш домашний каталог) находится в пользовательском crontab.

Первые строки в вашем скрипте используют абсолютные пути, последние строки - относительные пути. Вот почему это не удается.

Просто измените рабочий каталог в сценарии, прежде чем начинать использовать относительные пути или лучше в начале сценария:

cd /home/xyz/MySQL_Dumps/

Или используйте абсолютные пути везде в сценарии.

0
ответ дан 05.05.2020, 06:08
  • 1
    Я волновал помещающие полные пути. Большое спасибо! – Linus Unnebäck 05.05.2020, 06:08

Теги

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