У меня есть 16.04 Desktop box, который подключается к Интернету через WiFi. Для удобства удаленного управления wlan0 настраивается с помощью /etc/network/interfaces вместо сетевого менеджера.
У меня есть служба systemd, которая включена для запуска при загрузке. Эта служба настроена на запуск после default.target следующим образом:
[Unit]
After=default.target
[Service]
Type=simple
ExecStart=/usr/bin/node main.js"
Restart=always
[Install]
WantedBy=default.target
Эта служба запускается немедленно, если я загружаю ящик в диапазоне его Wi-Fi сети, потому что dhclient немедленно получает IP-адрес. Но если я загружу свою систему, где она не сможет попасть на Wi-Fi, моя служба сидит и ждет, пока dhclient не сдастся, прежде чем начать. Эта служба ждет точно 300 секунд, указанных в строфе /etc/dhclient/dhclient.conf timeout 300.
Мое понимание After=default.target состояло в том, что он не будет ждать в сети. After=network.target - инструмент для этого. Если я настрою свой Wi-Fi с помощью Network Manager вместо /etc/network/interfaces, служба запускается немедленно, независимо от доступности сети.
Как я могу запустить свою службу независимо от статуса dhclient, все еще используя /etc/network/interfaces?
Ответ, похоже, заключается в использовании таинственного выражения allow-hotplug в /etc/network/interfaces, как я узнал из https://askubuntu.com/a/868445/358498:
allow-hotplug wlan0
iface wlan0 inet dhcp
...
systemd больше не ждет в сети ударов службы, которая зависит от default.target. Почему allow-hotplug делает такую разницу немного неясной для меня, поскольку в моей системе не происходит истинного события «hotplug». https://askubuntu.com/a/868445/358498 говорит:
Документация о том, что разрешает-hotplug на самом деле, мало. (довольно хорошая страница руководства, BTW) подразумевает, что ifup откажется вызывать интерфейс, если не установлен параметр allow-hotplug; но если сеть запускается через /etc/init.d/networking, начните в любом случае, почему происходят разные вещи в зависимости от того, присутствует ли allow-hotplug? Это все очень запутанно, но, честное слово, вам нужно разрешить горячее соединение, если вы используете PCMCIA или Cardbus (или, возможно, USB).Ответ, похоже, заключается в использовании таинственного выражения allow-hotplug в /etc/network/interfaces, как я узнал из https://askubuntu.com/a/868445/358498:
allow-hotplug wlan0
iface wlan0 inet dhcp
...
systemd больше не ждет в сети ударов службы, которая зависит от default.target. Почему allow-hotplug делает такую разницу немного неясной для меня, поскольку в моей системе не происходит истинного события «hotplug». https://askubuntu.com/a/868445/358498 говорит:
Документация о том, что разрешает-hotplug на самом деле, мало. (довольно хорошая страница руководства, BTW) подразумевает, что ifup откажется вызывать интерфейс, если не установлен параметр allow-hotplug; но если сеть запускается через /etc/init.d/networking, начните в любом случае, почему происходят разные вещи в зависимости от того, присутствует ли allow-hotplug? Это все очень запутанно, но, честное слово, вам нужно разрешить горячее соединение, если вы используете PCMCIA или Cardbus (или, возможно, USB).Ответ, похоже, заключается в использовании таинственного выражения allow-hotplug в /etc/network/interfaces, как я узнал из https://askubuntu.com/a/868445/358498:
allow-hotplug wlan0
iface wlan0 inet dhcp
...
systemd больше не ждет в сети ударов службы, которая зависит от default.target. Почему allow-hotplug делает такую разницу немного неясной для меня, поскольку в моей системе не происходит истинного события «hotplug». https://askubuntu.com/a/868445/358498 говорит:
Документация о том, что разрешает-hotplug на самом деле, мало. (довольно хорошая страница руководства, BTW) подразумевает, что ifup откажется вызывать интерфейс, если не установлен параметр allow-hotplug; но если сеть запускается через /etc/init.d/networking, начните в любом случае, почему происходят разные вещи в зависимости от того, присутствует ли allow-hotplug? Это все очень запутанно, но, честное слово, вам нужно разрешить горячее соединение, если вы используете PCMCIA или Cardbus (или, возможно, USB).