MacOS Sierraで/etc/resolver/が変更される原因は何ですか?

MacOS Sierraで/etc/resolver/が変更される原因は何ですか?

特定のドメインに対してデフォルトではないDNSリゾルバを使用したいのですが、最初のアイデアは単にローカルdnsmasqを使用することです。 MacOSのバージョンを探している間、次のような単純な1行でドメイン名を/etc/resolver/example.com持つファイルを作成すると、同じことができることがわかりました。

nameserver 8.8.8.8

すべてが正常で、期待どおりに機能し、解決策が機能し、scutil --dns確認されます。

resolver #8
  domain   : example.com
  nameserver[0] : 8.8.8.8
  flags    : Request A records
  reach    : Reachable

次に、端末で実行できる簡単な1行コードを作成して、友​​達と共有したいと思いました。

sudo mkdir -p /etc/resolver/ && echo "nameserver 8.8.8.9" | sudo tee /etc/resolver/example.net

再確認scutil --dns

resolver #10
  domain   : example.net
  nameserver[0] : 8.8.8.9
  flags    : Request A records
  reach    : Reachable

その後、タイプミスを見つけてアドレスを8.8.8.8に変更し、次の行を再実行しました。

sudo mkdir -p /etc/resolver/ && echo "nameserver 8.8.8.8" | sudo tee /etc/resolver/example.net

しかし、これは何の効果もないようです。

resolver #10
  domain   : example.net
  nameserver[0] : 8.8.8.9
  flags    : Request A records
  reach    : Reachable

ファイルの内容を確認しましたが、すべてが大丈夫です。

$ cat /etc/resolver/example.net 
nameserver 8.8.8.8

それからファイルを開き、次にvim変更しました8.8.4.4

resolver #10
  domain   : example.net
  nameserver[0] : 8.8.4.4
  flags    : Request A records
  reach    : Reachable

何度も前後に確認しましたが、ファイルにアドレスをエコーし​​ても変更は適用されませんが、ファイルを開くだけで十分であり、何も変更せずvim(終了のみ)、以前にエコーされた変更が適用されます。これのメカニズムは何ですか?

ベストアンサー1

[It]ただ開ければ十分ですvim。何も変更せずに(ただ終了すると)、以前にエコーされた変更が適用されます。

sudo vim仕事に使うべきです。通常のユーザーとして実行しても効果はありません。私の理論は、/etc/resolverディレクトリ内のファイルではなくディレクトリへの変更を監視し、ディレクトリへの変更を見つけたら、その中のすべてを再ロードすることです。 Vimは、デフォルトで編集中のファイルと同じディレクトリにあるスワップファイルを作成します。これはディレクトリへの変更であり、オブザーバによって検出されます。だから私がするとき:

sudo vim -n /etc/resolver/example.net

スワップファイルの作成が無効になると、-nファイルの変更は適用されなくなります。

おすすめ記事