OSX bash脚本不能从cron运行

时间:2017-01-13 03:14:36

标签: macos shell cron

我有一个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任务的日志条目。 有任何想法吗? 感谢

1 个答案:

答案 0 :(得分:2)

'logger -s`将消息的副本发送到stderr,而不是stdout。此外,您可以将消息作为参数传递,而不是通过stdin传递。试试这个:

logger -s "Net script" 2>> /Library/Logs/netlog.log