
Моя виртуальная машина иногда теряет интернет-соединение на Linux, а мне нужно постоянно оставаться подключенным. Поэтому я написал следующий скрипт:
#!/bin/bash
wget -q --tries=10 --timeout=20 --spider http://google.com
if [[ $? -ne 0 ]]; then
service network-manager restart
fi
Когда я запускаю этот скрипт в консоли, он работает, но при использовании cron
я получаю:
network-manager: unrecognized service
Что я могу сделать, чтобы это сработало, или какой другой подход может мне помочь?
---------------- РЕШЕНИЕ ----------------
Чтобы узнать, почему это работает при запуске в консоли, но не во время задачи, cron
я запустил в консоли:
echo $PATH
Затем отобразилось:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
Поэтому я редактирую свой сценарий следующим образом:
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
wget -q --tries=10 --timeout=20 --spider http://google.com
if [[ $? -ne 0 ]]; then
service network-manager restart
fi
И это теперь работает!
решение1
Предположим, вы используете какой-либо дистрибутив, похожий на Linux Mint...
Похоже, что программа "service" не может найти скрипт "network-manager" для запуска. Она ищет в /etc/init или /etc/init.d, так что вы можете проверить там, что доступно.
Или посмотрите, подскажет ли вам автозаполнение (на мой взгляд, проще). Откройте терминал и введите:
service net
затем введите TABнесколько раз и вы должны получить автоматически заполненное имя, например «networkign», а также увидеть некоторые параметры, которые вы можете использовать, например:
$ service networking
force-reload reload restart start stop
Итак, вы можете попробовать использовать (может понадобиться, sudo
если скрипт еще не root):
service networking restart
Кроме того, вы можете просто заходить ping
на какой-нибудь сайт вроде Google каждую минуту или около того, чтобы проверить, работает ли сеть, вместо того, чтобы пытаться загрузить ее.
Попробуйте проверить виртуальную машину на наличие ошибок или странных настроек. Обычно она не должна терять сетевое соединение, если только его не теряет хост-компьютер...