CentOS 5.5 x86_64
Попытка отправить по электронной почте периодическое обновление системы с выводом команды температуры системы:
hpasmcli -s "show temp"
Выводит что-то вроде:
Sensor Location Temp Threshold
------ -------- ---- ---------
#1 AMBIENT 21C/69F 42C/107F
...
Итак, я пишу сценарий:
#!/bin/bash
hpasmcli -s "show temp" > /tmp/monitorTemp.log &
wait
mail -s "temperature" me@mydomain.com < /tmp/monitorTemp.log
rm -f /tmp/monitorTemp.log
Настроен на запуск каждый час в cron
* */1 * * * /root/monitorTemp.sh
Я получил электронное письмо, но оно пустое. Однако, если я просто запустил его из командной строки ./monitorTemp.sh
он отправляет мне электронное письмо с включенным выводом команды!
Что мне не хватает?
Попробуйте изменить это:
hpasmcli -s "show temp" > /tmp/monitorTemp.log &
wait
кому:
cd /path/to/hpasmcli
./hpasmcli -s "show temp" > /tmp/monitorTemp.log
При запуске из cron у вас нет такой же ПУТЬ, как при обычном входе в систему, это стоит иметь в виду. Вы также можете изменить PATH перед
PATH=$PATH:/path/to/hpasmcli
hpasmcli -s "show temp" > /tmp/monitorTemp.log
или что-то подобное. Вы можете получить /path/to/hpasmcli
при выполнении which hpasmcli
из вашей обычной командной строки.
РЕДАКТИРОВАТЬ: как отмечает Деннис в комментариях, для простых скриптов, подобных этому, нет необходимости cd
или настроить PATH
, это было бы хорошо:
/path/to/hpasmcli -s "show temp" > /tmp/monitorTemp.log
Вы также можете явно указать PATH в вашем crontab.
например. ПУТЬ = / usr / bin: / usr / sbin: / путь / к / исполняемому файлу :. * * / 1 * * * /root/monitorTemp.sh
Но я согласен с тем, что явная установка пути в сценариях, вероятно, является лучшим решением для разового использования.