Другая опция состояла бы в том, чтобы переместиться, подпиливает от Вашего /
. Если у Вас есть пространство на Вашем /home
раздел, например, просто переместитесь /usr
там (выполняет их как корень):
mv /usr /home/usr
ln -s /home/usr /
Тот путь /usr
больше не съедает пространство на /
.
Несколько возможностей:
Cron не передаёт полное пользовательское окружение скриптам, выполняемым под cron. Таким образом, vars типа $PATH могут работать под cron иначе, чем на пользовательском терминале.
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
-Задания на крон выполняются с очень небольшим контекстом. Если у вас в домашнем каталоге есть файл .my.cnf
, который может содержать аутентификационные данные, необходимые для работы команды mysql
. Вам, вероятно, также нужен полный путь к mail
- посмотрите, что печатает какая почта
.
Вместо того, чтобы писать полный путь для каждой команды, было бы полезно установить переменную 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`
использоватьbash -l -c
например:
* * * * * bash -l -c '/dsds/fddfd/something.sh' > /tmp/something.log