Как я могу заставить свой systemd сервис ожидать сетевого интерфейса?

У меня есть новомодный сценарий, который я преобразовываю в systemd. Чтобы этот сервис запустился, определенный сетевой интерфейс должен быть доступным.

Это - то, что я использую в своем новомодном сценарии:

start on (local-filesystems and net-device-added INTERFACE=tun0)

Что systemd эквивалентен?

1
задан 11 July 2015 в 15:11

1 ответ

См. https://unix.stackexchange.com/questions/257888/systemd-wait-for-network-interface-to-be-up-before-running-service

, необходимо смочь, имеют немного поврежденную версию того, как что Вы имели в новомодном сценарии с чем-то:

Wants=sys-devices-virtual-net-tun0.device
After=sys-devices-virtual-net-tun0.device

systemd должен генерировать tun0 файл 'устройства'. Единственная проблема состоит в том, что, если tun0 устройство не создается openvpn достаточно быстро, Ваш сервисный запуск попытается 'запуститься' sys-devices-virtual-net-tun0.device, который приведет к отказу тайм-аута (по умолчанию указанный DefaultTimeoutStartSec как 90 секунд обычно в /etc/systemd/system.conf). Таким образом, могло бы быть лучше иметь что-то, чтобы зависеть от openvpn и затем явно проверить на tun0 устройство, перезапустив, если это не найдено:

# Wait loosely on openvpn service
Wants=openvpnxxxx.service
After=openvpnxxx.service

# Make sure tun0 is up/active
ExecStartPre=/bin/bash -c "systemctl is-active sys-devices-virtual-net-tun0.device"
# Keep restarting till tun0 is up
Restart=on-failure
0
ответ дан 31 July 2019 в 08:21

Другие вопросы по тегам:

Похожие вопросы: