2017-01-13 3 views
0

У меня есть сценарий bash, который отлично работает из командной строки. После добавления его к корневым пользователям crontab (sudo crontab -e), я считаю, что он не запускается. Вот задача хрон:Сценарий OSX bash не работает от 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. Любые идеи? Thanks

+0

проверки учетной записи электронной почты для 'root' и посмотреть, если какие-либо сообщения вывода/ошибки из этих заданий появляются там (вы должны увидеть некоторые, или еще что-то не так (или вы не говорит нам вся история ;-))). , Надеемся, что сообщение об ошибке сообщит вам, в чем проблема. Удачи. – shellter

+0

Измените свою командную строку на '/Users/lorenzot/Documents/scripts/restart-net.sh || touch/tmp/cron_run.tmp' или аналогично, чтобы убедиться, что cron действительно выполнил задачу (или попытался). – codeforester

+0

Честное слово, вот и вся история. Я не знаю, что еще я мог вам сказать. Заданы сценарий и cron. – Lazloman

ответ

2

'logger -s` отправляет копию сообщения stderr, а не stdout. Кроме того, вы можете передать сообщение как аргумент, а не через stdin. Попробуйте это:

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

Это сделало это! Кажется, на самом деле он работает, но выход идет не туда. Но при дальнейших исследованиях, похоже, Apple обесценивает cron в пользу launchd. https://developer.apple.com/library/content/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/ScheduledJobs.html Я изучу переход на launchd. – Lazloman

+1

@ user675712 launchd обычно предпочтительнее, чем cron, но cron все еще поддерживается, и я ожидаю, что он будет вокруг в течение длительного времени. Я бы не стал беспокоиться о миграции до тех пор, пока вы не увидите явное преимущество для запуска. –

Смежные вопросы