私のラップトップが充電器に接続されているか、切断されたときに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には適していません。切り離されたかどうかにかかわらず、分岐されたプロセスはイベント処理が完了した後に無条件に終了します。