【发布时间】:2017-05-28 08:48:27
【问题描述】:
我有一个 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
该脚本归根用户所有,当然,它是可执行的 (766) 并且确实存在于正确的路径中。
我没有在日志文件中看到条目,但我不确定这是否是写入日志文件的正确方法。我尝试了几种不同的变体,包括:
syslog -s -k Facility com.apple.console \
Level Error \
Sender restartscript \
Message "Restart network script run"
但是没有任何东西写入任何日志。不过,我希望看到已执行的 cron 任务的日志条目。 有任何想法吗? 谢谢
【问题讨论】:
-
检查
root的邮件帐户并查看这些作业的任何输出/错误消息是否出现在那里(您应该看到一些,或者其他错误(或者您没有告诉我们整个故事;-) ) )。 .希望错误消息会告诉您问题所在。祝你好运。 -
将您的命令行更改为
/Users/lorenzot/Documents/scripts/restart-net.sh || touch /tmp/cron_run.tmp或类似的,以确保cron 确实启动了任务(或尝试启动)。 -
诚实,这就是全部。我不确定我还能告诉你什么。脚本和 cron 任务已发布。
-
我在 /tmp 中添加了触摸,但没有添加文件