我有一个简单的 bash 脚本来 ping 我的家庭服务器。在 crontab 中,我将其配置为每凌晨 2 点运行。然后通过电子邮件将 ping 结果发送给我。
奇怪的是,无论我在 crontab 中配置什么,它总是每分钟运行一次。有什么想法为什么会发生这种情况吗?
0 2 * * * pinger.sh
剧本
#!/bin/sh
masterip="192.168.2.1"
pname="Home Server"
sender="From: Server Monitoring <[email protected]>"
subject="$pname Server Connectivity"
mail="[email protected]"
ping -c1 $masterip
if [ "$?" = 0 ];
then
pingmessage="$pname is reachable via LAN IP $masterip"
pingms=$(ping -c 1 $masterip | sed -ne '/.*time=/{;s///;s/\..*//;p;}')
else
pingmessage="$pname is unreachable via LAN IP $masterip"
pingms=$(ping -c 1 $masterip | sed -ne '/.*time=/{;s///;s/\..*//;p;}')
fi
{
echo "$pingmessage"
echo "with $pingms ms ping"
} | mail -a "$sender" -s "$subject" $mail
答案1
如果您将重定向附加到 crontab 中的命令
"Command >> /path/to/log 2>&1"
输出将是可见的。
请记住,Cron 尚未获取您的环境,因此您的命令路径应从根目录/path/to/command
和脚本中的命令开始,除非您将 PATH 环境变量设置为所需的搜索路径。