下面是我的 shell 脚本,它是在另一个 x 中编写的,用于查找服务器 y 的运行状况。 (我没有在服务器y中编写,因为没有接收邮件的功能)
#!/bin/bash
target=10.9.34.52
count=$( ping -c 5 $target | grep icmp* | wc -l )
if [ $count -eq 0 ]
then
echo "The Tomcat Dev server GMP_Dev_Tomcat_cvgrhegmpd003 with ip address 10.9.34.52 is DOWN Please check your server ASAP" | mail -s " Dev Tomcat Server Status" [email protected]
else
echo "The Tomcat Dev server GMP_Dev_Tomcat_cvgrhegmpd003 with ip address 10.9.34.52 is UP and WORKING"
fi
我没有收到任何警报。我已经添加了每 1 分钟运行一次的shell
脚本。crontab -e
但是如果我运行脚本./scriptname.sh
,我确实会收到邮件(我正在检查服务器何时启动)。
答案1
正如 Joel 提到的,如果在 shell 中运行的 cron 中失败,通常是环境问题。
>> /home/myuser/myscript.log
在您的 cron 中,尝试通过附加到 cron 行末尾来记录脚本输出,然后在 cron 运行后读取该文件。
您可能会发现很多类似 的条目-bash: ping: command not found
,在这种情况下您需要在脚本中使用绝对路径(即/bin/ping
而不是ping
)。您可以使用它which [command]
来查找命令的绝对路径。