Ошибка в crontab для выполнения запроса MySQL, который экспортирует файл xlsx в сценарии bash - PullRequest
0 голосов
/ 14 января 2019

Добрый день

Я использую сценарий bash для экспорта содержимого базы данных mysql с именем QoS через автоматическое соединение через файл conexion.cnf, который содержит учетные данные моего пользователя root. Когда я выполняю свой скрипт вручную, он выполняется правильно и экспортирует файл в указанное место с именем $ fecha.xlsx, но когда crontab исполняется, ничего не происходит.

#!/bin/bash
cd /home/andres/BD/Perdida

fecha=$(date +%Y-%m-%d' '%H:%M);

mysql --defaults-file=/etc/my.cnf.d/conexion.cnf -D QoS -e "SELECT * FROM Throughput_TX" > /home/andres/BD/Scripts/$fecha.xlsx

Crontab

* * * * * /bin/bash -lc /home/andres/BD/Scripts/ Throughputprueba.sh > /dev/null

Я использую пользователя root.

Очень спасибо.

Ответы [ 2 ]

0 голосов
/ 14 января 2019

и две точки:

  1. Вы слишком часто запускаете свой скрипт. Проверьте, сколько времени потребуется для запуска Сценарий и сделать частоту запуска меньше, чем это значение
  2. У вас есть один пробел в вашем скрипте, который будет выполняться как никогда скрипт оболочки

    * * * * * /bin/bash -lc /home/andres/BD/Scripts/ Throughputprueba.sh ^

И вам не нужно запускать еще один bash, запустите cron так:

* * * * * /home/andres/BD/Scripts/Throughputprueba.sh
0 голосов
/ 14 января 2019

Ваши переменные среды могут быть не установлены.

Сначала вам нужно установить соответствующие переменные окружения, а затем выполнить ваш скрипт.

попробовать

#!/bin/bash
. /home/andres/.bash_profile #<-- this part need to address your bash_profile.
cd /home/andres/BD/Perdida

fecha=$(date +%Y-%m-%d' '%H:%M);

mysql --defaults-file=/etc/my.cnf.d/conexion.cnf -D QoS -e "SELECT * FROM Throughput_TX" > /home/andres/BD/Scripts/$fecha.xlsx

в качестве альтернативы вы указываете полный путь к mysql.

whereis mysql

получить путь и добавить в-перед /<full-path>/mysql --defaults-file=...

Редактировать: ваш cron имеет синтаксическую ошибку

* * * * * /bin/bash -lc /home/andres/BD/Scripts/ Throughputprueba.sh > /dev/null

до

* * * * * /bin/bash -lc /home/andres/BD/Scripts/Throughputprueba.sh > /dev/null
...