我有一个bash脚本,从命令行运行得很好。将它添加到root用户crontab(sudo crontab -e)后,我发现它没有运行。这是cron任务:
0,15,30,45 * * * * /Users/lorenzot/Documents/scripts/restart-net.sh
这是脚本:
#!/bin/bash
echo "Net script" | logger -s >> /Library/Logs/netlog.log
# Ping twice just to be sure
/sbin/ping -c 2 8.8.8.8
/sbin/ping -c 2 8.8.8.8
if [ $? -ge 1 ]; then
echo "Network down :("
ifconfig en1 down
ifconfig en1 up
exit 1
else
echo "Network up! :)"
exit 0
fi
该脚本由root拥有,当然,它是可执行的(766),它确实存在于正确的路径上。
我没有在日志文件中看到条目,但我不确定这是否是写入日志文件的正确方法。我尝试了一些不同的变体,包括:
syslog -s -k Facility com.apple.console \
Level Error \
Sender restartscript \
Message "Restart network script run"
但是没有任何内容写入任何日志。不过,我希望看到已执行的cron任务的日志条目。 有任何想法吗? 感谢
答案 0 :(得分:2)
'logger -s`将消息的副本发送到stderr,而不是stdout。此外,您可以将消息作为参数传递,而不是通过stdin传递。试试这个:
logger -s "Net script" 2>> /Library/Logs/netlog.log