Tôi đang chạy Arch Linux và tôi có quy tắc udev khởi động dịch vụ khi thiết bị được chèn. Trong trường hợp này, nó sẽ quay số kết nối khi cắm modem 3G.
KERNEL=="ttyUSB*", SYMLINK=="gsmmodem", TAG+="systemd", ENV{SYSTEMD_WANTS}="netcfg@wvdial.service"
Tuy nhiên, nếu thiết bị bị xóa, systemd sẽ không dừng dịch vụ và do đó khi thiết bị được cắm lại, nó sẽ không khởi động dịch vụ, vì nó đã chạy.
Những gì tôi cần là một quy tắc udev phù hợp chạy khi thiết bị được gỡ bỏ để dừng dịch vụ.
Cập nhật
Sử dụng câu trả lời dưới đây, những gì tôi có bây giờ là quy tắc udev sau đây
KERNEL=="ttyUSB*", SYMLINK=="gsmmodem", TAG+="systemd", ENV{SYSTEMD_WANTS}="vodafone.service"
với tệp dịch vụ sau (về cơ bản đã được sao chép và dán từ tệp dịch vụ 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
Tôi đang sử dụng netcfg-wvdial
từ AUR để thực hiện quay số.