Korzystam z Arch Linux i mam regułę udev, która uruchamia usługę po włożeniu urządzenia. W takim przypadku wybiera połączenie, gdy modem 3G jest podłączony.
KERNEL=="ttyUSB*", SYMLINK=="gsmmodem", TAG+="systemd", ENV{SYSTEMD_WANTS}="[email protected]"
Jeśli jednak urządzenie zostanie usunięte, systemd nie zatrzyma usługi, a zatem po ponownym podłączeniu nie uruchomi usługi, ponieważ jest już uruchomiona.
Potrzebuję pasującej reguły udev, która działa, gdy urządzenie jest usuwane, aby zatrzymać usługę.
Aktualizacja
Korzystając z poniższej odpowiedzi, teraz mam następującą zasadę udev
KERNEL=="ttyUSB*", SYMLINK=="gsmmodem", TAG+="systemd", ENV{SYSTEMD_WANTS}="vodafone.service"
z następującym plikiem usługi (który został w zasadzie skopiowany i wklejony z pliku usługi netcfg:
[Unit]
Description=Netcfg networking service for Vodafone Dongle
Before=network.target
Wants=network.target
BindsTo=dev-gsmmodem.device
After=dev-gsmmodem.device
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/netcfg check-iface wvdial
ExecStop=-/usr/bin/netcfg down wvdial
KillMode=none
[Install]
WantedBy=multi-user.target
Używam netcfg-wvdial
z AUR do wybierania numeru.
StopWhenUnneeded=true
zamiastBindsTo
iAfter
StopWhenUnneeded=true
działanie, ale sądzę, że został naprawiony już od dłuższego czasu.