udevルールを追加すると、システムネットワークタイムアウトが発生します。

udevルールを追加すると、システムネットワークタイムアウトが発生します。

私のラップトップが充電器に接続されているか、切断されたときにudevに特定のスクリプトを実行させたいと思います。

そのためにファイルを作成し、99-local.rules次の/etc/udev/rules.d内容を入れました。

ACTION=="change", SUBSYSTEM=="power_supply", ATTR{online}=="1", RUN+="/usr/sbin/onchg.sh"
ACTION=="change", SUBSYSTEM=="power_supply", ATTR{online}=="0", RUN+="/usr/sbin/onbatt.sh"

ただし、ファイルが適切な場所にある場合、システムは「ネットワークインターフェースの上昇」ターゲット中にしばらく停止しているように見え、表示された5分の2分後にタイムアウトします。

ファイルを削除するとうまくいきます。

udevはネットワークインタフェースの起動にどのような関係があり、どのようにできるだけ早く起動しながらもこれらのルールを維持できますか?

ベストアンサー1

udevadm settle出力には次の関係がありますsystemctl cat networking

ExecStartPre=-/bin/sh -c '[ "$CONFIGURE_INTERFACES" != "no" ] && [ -n "$(ifquery --read-environment --list --exclude=lo)" ] && udevadm settle'

キーman udevについては、次の点を考慮してください。RUN

これは、非常に短期的に実行されるフォアグラウンドジョブでのみ使用できます。長期実行イベントプロセスは、そのデバイスまたはスレーブデバイスに対するすべての追加イベントをブロックできます。

デーモンや他の長期実行プロセスを開始することはudevには適していません。切り離されたかどうかにかかわらず、分岐されたプロセスはイベント処理が完了した後に無条件に終了します。

おすすめ記事