起動するたびに、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
仮想[Eメール保護]、同じ 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の変更が完了することを保証します。