【发布时间】:2015-09-22 22:48:29
【问题描述】:
我编写了一个 shell 脚本,它检查存储设备中的文件系统并将输出发送到特定的电子邮件。当我手动执行它时,它运行良好,并且我收到了包含有效内容的电子邮件。但是,当我将它放在同一用户的 cronjob 中时,它正在发送空邮件。我无法找出缺少的东西。即使我为 root 用户安排了 cronjob,同样的问题仍然存在。下面是我的脚本:
$ cat qmon.sh
nas_fs -list \
| grep -v ckpt_ \
| grep -v root_ \
| awk '{print $6}' >filesystem_list
for i in `cat filesystem_list`
do
nas_quotas -report -tree -fs $i \
| egrep -i -B18 'mins|day|exp' >>quota_exp
done
cat quota_exp \
| mail -s "FF VNX01 Quota report" storagemgmt@mycompany.com
cat /dev/null >quota_exp
【问题讨论】:
-
我的怀疑是,在其中一个通道甚至 filesystem_list 的位置中,某些东西取决于丢失的环境变量。通常是
$HOME。在 qmon.sh 中沿途添加更多输出以帮助诊断,例如在for i之前,做echo looping through list等。 -
如果以
|结束行,则不需要反斜杠; shell 将知道命令在下一行继续,因为命令不能以管道结束。 -
不要 iterate over a file 使用 for 循环。
-
cron 是否向运行 cron 作业的用户发送任何电子邮件?
标签: linux bash shell crontab sendmail