Saya menjalankan Arch Linux, dan saya memiliki aturan udev yang memulai layanan ketika perangkat dimasukkan. Dalam hal ini, itu akan memanggil sambungan ketika modem 3G dicolokkan.
KERNEL=="ttyUSB*", SYMLINK=="gsmmodem", TAG+="systemd", ENV{SYSTEMD_WANTS}="[email protected]"
Namun, jika perangkat dihapus, systemd tidak akan menghentikan layanan, dan karenanya ketika dicolokkan lagi, itu tidak akan memulai layanan, karena sudah berjalan.
Yang saya butuhkan adalah aturan udev yang cocok yang berjalan ketika perangkat dihapus untuk menghentikan layanan.
Memperbarui
Menggunakan jawaban di bawah ini, apa yang sekarang saya miliki adalah aturan udev berikut
KERNEL=="ttyUSB*", SYMLINK=="gsmmodem", TAG+="systemd", ENV{SYSTEMD_WANTS}="vodafone.service"
dengan file layanan berikut (yang pada dasarnya disalin dan ditempelkan dari file layanan 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
Saya menggunakan netcfg-wvdial
dari AUR untuk melakukan panggilan.
StopWhenUnneeded=true
bukannyaBindsTo
danAfter
StopWhenUnneeded=true
bekerja, tapi saya yakin itu sudah diperbaiki untuk beberapa saat sekarang.