タイトルが私の状況を正しく説明しているかどうかはわかりませんが、詳細は次のようになります。
wlp2s0 インターフェイスを使用して、ワイヤレス ネットワークをセットアップするための簡単な bash スクリプトを作成しています。
ip route flush dev wlp2s0
ip addr flush dev wlp2s0
ip link set wlp2s0 down
killall wpa_supplicant
ip link set wlp2s0 up
ip addr add 192.168.1.200/24 dev wlp2s0
ip route add default via 192.168.1.1
wpa_supplicant -B -D wext -i wlp2s0 -c wireless.conf
以前に開始されたすべての wpa_supplicants を強制終了してから、新しいものを開始します。さて、問題は、killall
呼び出しがip route add
泣くことです:
RTNETLINK の回答: ネットワークに到達できません
wpa_supplicant が実際に以前に開始されたかどうかは関係ありません。
sleep 1
の後に呼び出しを追加することで「修正」できますkillall
が、もちろんこれは避けたいと思います。killall
コマンドを削除し、スクリプトの前に手動で呼び出すことで修正することもできます。
問題は、のこの奇妙な動作を回避するにはどうすればよいかということkillall
です。なぜこれらの奇妙なことが起こっているのか、誰かが何か知っているかもしれません。
EDIT:前に呼び出されていないip route add
場合、そのエラーは発生しません。killall