Назад | Перейти на главную страницу

Скрипт не работает при запуске из cron

У меня есть несколько встроенных машин, подключенных к ненадежному соединению, с которыми, к сожалению, не справляется сетевой менеджер. В настоящее время мне нужно проверить подключение, а затем перезапустить диспетчер сети, если мы не подключены, поскольку в большинстве случаев это будет обрабатывать конкретную ситуацию, в которой мы видим, что они терпят неудачу. У меня есть следующий сценарий, который отлично работает, когда я его запускаю рукой:

#!/bin/bash

host=http://google.com
timeout=60

if ! wget -S --spider --timeout=$timeout $host &>/dev/null; then
    restart network-manager
fi

В настоящее время у меня есть запись в /etc/cron.d/ который имеет */15 * * * * root /usr/bin/check_connectivity. Я вижу, что скрипт запускается, читая журналы cron, но когда я смотрю журналы сетевого менеджера, я вижу, что даже когда я тестирую без активных подключений, он не перезапускает подключение. Запуск скрипта вручную завершается успешно, и NM перезапускается. В журналах cron нет сообщений об ошибках, и даже когда я удаляю выходной дамп, я все равно ничего не получаю. Я не понимаю, почему он терпит неудачу. Я мог бы подумать, что он не может правильно разговаривать с dbus, но если бы это было так, я бы увидел сообщение об ошибке.

Проверьте электронную почту root. Cron отправляет весь вывод в почтовом сообщении владельцу crontab. Я предполагаю, что «перезапуск» не на пути cron. Я всегда включаю строку «PATH =» в верхней части моих скриптов по этой и другим причинам.