Как исправить потерю соединения в виртуальной машине?

Как исправить потерю соединения в виртуальной машине?

Моя виртуальная машина иногда теряет интернет-соединение на 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 каждую минуту или около того, чтобы проверить, работает ли сеть, вместо того, чтобы пытаться загрузить ее.


Попробуйте проверить виртуальную машину на наличие ошибок или странных настроек. Обычно она не должна терять сетевое соединение, если только его не теряет хост-компьютер...

Связанный контент