Сценарий работает вручную, но не от крона

Другая опция состояла бы в том, чтобы переместиться, подпиливает от Вашего /. Если у Вас есть пространство на Вашем /home раздел, например, просто переместитесь /usr там (выполняет их как корень):

mv /usr /home/usr
ln -s /home/usr /

Тот путь /usr больше не съедает пространство на /.

3
19.06.2014, 15:53
4 ответа

Несколько возможностей:

  1. Cron не передаёт полное пользовательское окружение скриптам, выполняемым под cron. Таким образом, vars типа $PATH могут работать под cron иначе, чем на пользовательском терминале.

  2. Cron требует наличия новой строки в конце каждой строки, поэтому всегда держите пустую строку в конце файла crontab.


Может быть, укажите в скрипте полные пути, и посмотрим, сработает ли это для начала.

#!/bin/bash
statfile=/tmp/mysql_repl_status.txt
/bin/date > $statfile
cd /usr/bin
/usr/bin/mysql -e "SHOW SLAVE STATUS \G" >> $statfile
/bin/mail -s "Netspective MySQL Replication Status" name@abc.com < $statfile
5
27.01.2020, 21:12

-Задания на крон выполняются с очень небольшим контекстом. Если у вас в домашнем каталоге есть файл .my.cnf, который может содержать аутентификационные данные, необходимые для работы команды mysql. Вам, вероятно, также нужен полный путь к mail - посмотрите, что печатает какая почта .

.
1
27.01.2020, 21:12

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

#!/bin/bash
export PATH=/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
date > /tmp/mysql_repl_status.txt
cd /usr/bin/
"/usr/bin/mysql" "-e" "SHOW SLAVE STATUS \G" >> /tmp/mysql_repl_status.txt
mail -s "Netspective MySQL replication status" name@abc.com < 
/tmp/mysql_repl_status.txt`
1
27.01.2020, 21:12

использоватьbash -l -c

например:

* * * * * bash -l -c '/dsds/fddfd/something.sh' > /tmp/something.log
0
11.02.2020, 19:23

Теги

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