nscdが保持しているキャッシュをクリアする

hostsファイルの記載に誤りがあるまま、telnetコマンドを実行した。
で、誤りに気付き、hostsに記載のIPアドレスを修正し、telnetコマンドを再度実行したが、なぜか古い記載のアドレスに接続しにいく。

むむっ、と思って、straceしてチェックしたら、

connect(3, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = 0

↑の通り、nscdを見に行っておった。

# nscd -i hosts

ということで、↑のような感じで、nscdの持っているhostsのキャッシュを破棄して、無事期待通りの動作になった。

・・・たまに調べるから、ここに残しておく。
それでは! =͟͟͞͞(๑•̀=͟͟͞͞(๑•̀д•́=͟͟͞͞(๑•̀д•́๑)=͟͟͞͞(๑•̀д•́

追記

やっぱりそうだよなぁ。うーむ。

デーモンは( passwd データベースについては /etc/passwd、 hosts データベースについては /etc/hosts と /etc/resolv.conf というような)それぞれのデータベースのための設定ファイルを見張って、 これらが変更されるとキャッシュをフラッシュする。 しかし、これは( inotify(7) が利用可能で、glibc 2.9 以降が利用可能な場合を除いて) 短い遅延の後に起こり、またこの自動検出は非標準 NSS モジュールが /etc/nsswitch.conf で指定されている場合はその設定ファイルには対応しない。 この場合、データベースの設定ファイルを変更した後、 nscd のキャッシュを無効にするために以下のコマンドを実行する必要がある:

$ nscd -i <database>