У меня есть рабочий стол под управлением Ubuntu Gnome 16.04. При перезагрузке иногда (случайно) сетевая карта пропадает. То есть eth0
исчезает из ifconfig
, lspci
и т.д. Я не могу вернуть eth0
без перезагрузки в таких ситуациях. Обычно, когда это происходит, машина не подключается к Интернету. Кроме того, обычно, единственная перезагрузка решает проблему, и Ethernet снова появляется.
Я понятия не имею о том, как я могу начать отлаживать это. Тем не менее, я хотел бы иметь сценарий или службу, которая проверяет, был ли загружен Ethernet (компьютер подключен к Интернету), и перезагружается, если нет. Этот сценарий или служба должны быть запущены до того, как любой пользователь войдет в систему, потому что иногда я перезагружаю машину удаленно и теряю к ней доступ, если ethernet не запускается.
У меня есть скрипт, который проверяет, подключен ли интернет. Но мне не удалось заставить его работать в нужное время. Я пытался использовать crontab
, но кажется, что cron
инициализируется до подключения к Интернету (как записи в файле журнала); Я попытался поместить сценарий upstart в /etc/init/
, только чтобы понять, что Ubuntu теперь использует systemd
и upstart больше не рекомендуется. Я также написал системный файл systemd
и имел смешанные результаты (bootloop и ничего). Что я делаю неправильно?
Скрипт проверки интернет-соединения
#!/bin/bash
ping -c 1 8.8.8.8 > /dev/null
if [ $? -eq 0 ]; then
echo "ok"
else
reboot
fi
systemd
файл блока , который вызвал bootloop
[Unit]
Description=Tests Internet connectivity. Reboots if not connected.
After=network.target syslog.target
[Service]
Type=forking
ExecStart=/usr/local/bin/internet_test.sh
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=InternetTest
[Install]
WantedBy=multi-user.target
Файл systemd
модуля, который ничего не делал (даже сервис не регистрировался как запущенный)
[Unit]
Description=Tests Internet connectivity. Reboots if not connected.
After=multi-user.target
[Service]
Type=forking
ExecStart=/usr/local/bin/internet_test.sh
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=InternetTest