ฉันกำลังเรียกใช้ 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 เพื่อโทรออก