У меня есть рабочий стол под управлением 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
