我写了一个脚本,一切都根据我的需要运行良好:
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
Run Code Online (Sandbox Code Playgroud)
我想通过 Cron 每分钟运行一次这个脚本,看我的 crontab:
* * * * * /etc/diskspacae/vpndrive.sh
Run Code Online (Sandbox Code Playgroud)
如您所见,如果驱动器空间超过 80%,运行此脚本后,我想使用 sendmail 在我的电子邮件中收到通知。
但是当我从 Cron 运行这个脚本时我还没有得到它,并且我在/var/spool/mail/root
.
ERROR Message: /etc/diskspace/vpndrive.sh line 34 : sendmail: command not found.
Run Code Online (Sandbox Code Playgroud)
Ben*_*oit 12
不要忘记 Cron 执行的脚本是在具有有限 PATH 变量的环境中运行的。这意味着在控制台上测试脚本时,控制台 shell 将毫无问题地找到sendmail。但是当从 Cron 运行时,找不到sendmail。
为 Cron 编写脚本时的最佳实践是放置完整路径以访问您要运行的命令,只是为了确保。
通常,sendmail二进制文件安装在 下/usr/sbin
,默认情况下,该路径不是 Cron 查找的目录的一部分。所以我建议:
locate sendmail
或者find / -type f -name sendmail)
如果locate
没有安装)小智 1
很可能sendmail
是没有安装。
要安装它,请sudo apt-get install sendmail
在终端中键入。
如需进一步配置,请访问类似问题:How to configure sendmail on ubuntu?
归档时间: |
|
查看次数: |
19795 次 |
最近记录: |