Я пытаюсь настроить работу cron на моем Ubiquity Edge Router, который будет изменять файл hosts один раз утром и один раз ночью в будние дни, чтобы блокировать различные веб-сайты с 8:00 до 19:00.

Я создал 2 сценария оболочки:

/config/scripts/set-blocking-hosts.sh
/config/scripts/set-default-hosts.sh

Каждый из них имеет 2 строки:

cp /etc/hosts.blocking /etc/hosts
/etc/init.d/dnsmasq restart

Обратите внимание, что первая строка с командой cp отличается в каждом сценарии, чтобы скопировать соответствующий файл (hosts.default или hosts.blocking)

Если я запускаю эти скрипты напрямую в ssh, то они делают именно то, что я хочу, и работают отлично.

У меня возникли проблемы с запуском их по расписанию с помощью cron.

Вот мои записи cron:

0 8 * * 1-5 /config/scripts/set-blocking-hosts.sh
0 19 * * 1-5 /config/scripts/set-default-hosts.sh

До сих пор я пытался добавить эти записи, используя crontab -e и sudo crontab -e но ни одна из них не работает.

Я искал файл журнала в /var/log но не смог найти ничего подходящего.

Если я запускаю эту команду, ps -ef | grep cron | grep -v grep Я получаю следующий результат, предполагая, что cron запущен.

root     490     1     0 Oct24 ?     00:00:09 /usr/sbin/cron

Я не уверен, куда я должен поместить записи cron для выполнения заданий, или если мне нужно перезагрузить маршрутизатор, или что-то где-то выключено, или такого рода вещи не поддерживаются на маршрутизаторе.

Отказ от ответственности, я не системный парень или парень Linux, поэтому большую часть этого я выяснил путем исследований и проб и ошибок.

Любая помощь очень ценится!

1 ответ1

1

решаемая

Во-первых, это было достигнуто с помощью sudo crontab -e хотя он также может работать с использованием crontab -e от зарегистрированного пользователя - я просто не знаю, будет ли проблема с разрешениями.

Во-вторых, записи cron необходимо изменить, чтобы они включали начальный "sh", как показано ниже:

0 8 * * 1-5 sh /config/scripts/set-blocking-hosts.sh
0 19 * * 1-5 sh /config/scripts/set-default-hosts.sh

Наконец, и это, вероятно, изолировано для меня - я изменил часовой пояс на моем маршрутизаторе с UTC на PST и не перезагружался. В то время как date показывал бы местное время как PST, я думаю, что cron все еще работал на основе UTC - возможно, если бы я перезапустил cron , мне бы не понадобилась перезагрузка маршрутизатора.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .