시작할 때마다 Mac 주소를 Wi-Fi 어댑터로 변경하는 시스템 서비스가 있습니다. 시스템 서비스가 제대로 실행되고 있습니다. Wi-Fi 어댑터가 USB에 연결되어 있지 않을 때 서비스가 1분 30초 동안 기다리지 않기를 원합니다.
어떻게 해야 하나요?
[Unit]
Description=macchanger on %I
Wants=network-pre.target
Before=network-pre.target
BindsTo=sys-subsystem-net-devices-%i.device
After=sys-subsystem-net-devices-%i.device
[Service]
ExecStart=/usr/bin/macchanger -r %I
Type=oneshot
[Install]
WantedBy=multi-user.target
답변1
multi-user.target
처음부터 장치를 종속성으로 시작하지 마세요. 대신 종속성으로 시작하십시오.장치 자체의.Udev 규칙을 사용하여 장치에 Wants= 종속성을 추가할 수 있습니다.
/etc/udev/rules.d/90-macchanger.rules
ACTION!="제거", SUBSYSTEM=="net", KERNEL=="wlan*", ENV{SYSTEMD_WANTS}+="macchanger@$name.service"
이로 인해 sys-…-wlan0.device
가상[이메일 보호됨], 동일한 multi-user.target을 갖는 대신 장치가 나타날 때만 서비스가 시작됩니다.
그런데 그렇게 하면 안 돼요.필요더 이상 .service가 없습니다. udev 규칙에서 직접 macchanger를 실행할 수 있습니다. (장기적으로 실행되는 서비스에서는 불가능하지만 소규모 도우미에게는 괜찮습니다.)
/etc/udev/rules.d/90-macchanger.rules
ACTION!="제거", SUBSYSTEM=="net", KERNEL=="wlan*", RUN+="/bin/macchanger -r $name"
사실 그럴 것이다더 나은 것서비스를 사용하는 것과는 대조적으로 udev가 장치가 다른 서비스를 사용할 수 있도록 "준비"되었다고 선언하기 전에 MAC 변경이 완료되도록 보장합니다.