У меня есть новомодный сценарий, который я преобразовываю в systemd. Чтобы этот сервис запустился, определенный сетевой интерфейс должен быть доступным.
Это - то, что я использую в своем новомодном сценарии:
start on (local-filesystems and net-device-added INTERFACE=tun0)
Что systemd эквивалентен?
, необходимо смочь, имеют немного поврежденную версию того, как что Вы имели в новомодном сценарии с чем-то:
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