Arch-Linux
出現界面時執行的腳本(不一定會啟動)
我有一個 USB 網路介面,當我插入 USB 密鑰時出現,或者有時,當我啟動我的樹莓派時,USB 密鑰已經插入。這個問題的通常解決方案是添加一個 udev 腳本,如下所示:
/udev/rules.d/50-stick.rules ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="1405", RUN+="/usr/bin/netctl restart usb0"
但這不起作用,無論是在啟動時,還是在我(重新)插入搖桿時。是否存在另一種方式?我想繞過 udev 方法並在出現介面(例如 usb0)時啟動腳本。
編輯:為什麼這不起作用:
ACTION=="add", SUBSYSTEM=="net", ENV{INTERFACE}=="usb0", RUN+="/usr/bin/netctl restart usb0"
一些資訊:
udevadm info /sys/class/net/usb0 P: /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/net/usb0 L: 0 E: DEVPATH=/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/net/usb0 E: INTERFACE=usb0 E: IFINDEX=5 E: SUBSYSTEM=net E: USEC_INITIALIZED=508278395 E: ID_NET_NAMING_SCHEME=v240 E: ID_VENDOR=ZTE_Incorporated E: ID_VENDOR_ENC=ZTE\x2cIncorporated E: ID_VENDOR_ID=19d2 E: ID_MODEL=ZTE_Mobile_Broadband E: ID_MODEL_ENC=ZTE\x20Mobile\x20Broadband E: ID_MODEL_ID=1405 E: ID_REVISION=5486 E: ID_SERIAL=ZTE_Incorporated_ZTE_Mobile_Broadband_1234567890ABCDEF E: ID_SERIAL_SHORT=1234567890ABCDEF E: ID_TYPE=generic E: ID_BUS=usb E: ID_USB_INTERFACES=:020600:0a0000:080650: E: ID_USB_INTERFACE_NUM=00 E: ID_USB_DRIVER=cdc_ether E: ID_USB_CLASS_FROM_DATABASE=Communications E: ID_VENDOR_FROM_DATABASE=ZTE WCDMA Technologies MSM E: ID_PATH=platform-3f980000.usb-usb-0:1.3:1.0 E: ID_PATH_TAG=platform-3f980000_usb-usb-0_1_3_1_0 E: ID_NET_DRIVER=cdc_ether E: ID_NET_LINK_FILE=/usr/lib/systemd/network/99-default.link E: SYSTEMD_ALIAS=/sys/subsystem/net/devices/usb0 E: TAGS=:systemd:
最後,我採用了這個解決方案(
/etc/udev/rules.d/99-stick.rules
):ACTION=="add", SUBSYSTEM=="net", ENV{INTERFACE}=="usb0", RUN+="/usr/bin/netctl restart usb0", RUN+="/usr/bin/systemctl restart ntpdate"