システムサービスを待つ時間を減らすには?

システムサービスを待つ時間を減らすには?

起動するたびに、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の変更が​​完了することを保証します。

おすすめ記事