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" [email protected] < /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:/path/to/hpasmcli hpasmcli -s "show temp" > /tmp/monitorTemp.log
或类似的东西。 您可以通过从常规命令提示符执行which hpasmcli来获取/path/to/hpasmcli 。
编辑:正如丹尼斯在评论中指出的,对于这样的简单脚本,没有必要cd或设置PATH ,这将是很好:
/path/to/hpasmcli -s "show temp" > /tmp/monitorTemp.log
你也可以在你的crontab中明确地设置一个PATH。
例如。 PATH = / USR / bin中:/ usr / sbin目录:/path/到/可执行:. * * / 1 * * * /root/monitorTemp.sh
但我同意在脚本中明确地设置path可能是一个更好的解决scheme。