我正在运行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进行拨号。