Я запускаю Arch Linux, і у мене є правило udev, яке запускає службу, коли вставляється пристрій. У цьому випадку він набирає з'єднання, коли підключається 3G-модем.
KERNEL=="ttyUSB*", SYMLINK=="gsmmodem", TAG+="systemd", ENV{SYSTEMD_WANTS}="netcfg@wvdial.service"
Однак якщо пристрій вилучено, systemd не зупинить службу, а значить, коли він знову підключений, він не запустить службу, оскільки він вже працює.
Що мені потрібно - це відповідне правило udev, яке запускається при видаленні пристрою для припинення служби.
Оновлення
Використовуючи відповідь нижче, те, що у мене зараз, є наступним правилом udev
KERNEL=="ttyUSB*", SYMLINK=="gsmmodem", TAG+="systemd", ENV{SYSTEMD_WANTS}="vodafone.service"
зі наступним службовим файлом (який в основному скопійовано та вставлено з файлу служби 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
Я використовую netcfg-wvdial
AUR для набору номера.