Я написал скрипт, и все работает так хорошо в соответствии с моими потребностями:
a=$(df -h /mnt/smb | tail -n +3 | tr -s ' ' | tr '%' ' ' | cut -d ' ' -f 5)
echo $a
if [[ $a -ge 30 ]]; then
cat /etc/diskspace/text.txt | sendmail test.gmail.com
fi
Я хочу запускать этот скрипт каждую минуту через Cron, см. Мой crontab:
* * * * * /etc/diskspacae/vpndrive.sh
Как вы можете видеть, после запуска этого скрипта, если дисковое пространство превышает 80%, я хочу использовать sendmail для получения уведомления по электронной почте.
Но у меня его нет, когда я запускаю этот скрипт из Cron, и у меня есть это сообщение об ошибке в /var/spool/mail/root
.
ERROR Message: /etc/diskspace/vpndrive.sh line 34 : sendmail: command not found.
Не забывайте, что сценарий, выполняемый Кроном, работал в среде с ограниченной переменной ПУТИ. Это означает, что на консоли при тестировании сценария консольная оболочка найдет sendmail без проблемы. Но когда работал от Крона, sendmail не найден.
Наиболее успешная практика, когда запись сценариев для Крона должна поместить полный путь для доступа к команде, Вы хотите работать, только быть уверенными.
Обычно, sendmail двоичный файл является установкой под /usr/sbin
, путь, который не является частью каталогов, искавших Кроном по умолчанию. Таким образом, я советовал бы к:
locate sendmail
или find / -type f -name sendmail)
если locate
не установлен), По всей вероятности sendmail
не установлен.
Для установки его тип sudo apt-get install sendmail
в терминале.
Для дальнейшей конфигурации посещают подобный вопрос: , как настроить sendmail на человечности?