[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-users:24685] Re: about nscd
すやまです。
>
> # fork 先もトレースするオプションがあったのですね。
> しかし、-f -F をつけても strace の結果に変わりはありませんでした。
>
> Daisuke Yamashita
> http://village.infoweb.ne.jp/%7Edais/
時間があったので検証してみました。
PID TTY STAT TIME COMMAND
3044 ttyp0 S 0:00 /usr/sbin/nscd
3040 ttyp0 S 0:00 /usr/sbin/nscd
3045 ttyp0 S 0:00 /usr/sbin/nscd
3046 ttyp0 S 0:00 /usr/sbin/nscd
3048 ttyp0 S 0:00 /usr/sbin/nscd
3049 ttyp0 S 0:00 /usr/sbin/nscd
3050 ttyp0 S 0:00 /usr/sbin/nscd
この状態で、
$ sudo strace -eopen,close -p 3040 -p 3045 -p 3046 -p 3048
-p 3049 -p 3050
とやってping foo すると、nscd起動後の一回だけ、
[pid 3040] open("/etc/hosts", O_RDONLY) = 4
[pid 3040] close(4) = 0
[pid 3040] open("/etc/ld.so.cache", O_RDONLY) = 4
[pid 3040] close(4) = 0
[pid 3040] open("/lib/libnss_dns.so.2", O_RDONLY) = 4
[pid 3040] close(4) = 0
[pid 3040] open("/lib/libresolv.so.2", O_RDONLY) = 4
と表示されて、後はping先が既知ならなにもopenしない、ping先が未知なら/etc/hosts
のみをopenしてるようです。libnss_dns,libresolve が/etc/ld.so.cacheに乗っちゃう
んで、リゾルバ周りの設定が変わった場合は、nscdを再起動するしかなさそうですね。
にしてもstraceってコマンド、
$ sudo strace -eopen,close -f -p 3040
とやって親プロセスだけ指定するとなにも出ないで、子プロセスも全部指定して始めて
親プロセス[pid 3040]のシステムコールが追跡できるのが、なんかミステリアス。
--
SETAGAYA\suyama@xxxxxxxxxxxxx/SLIMの意味なしシグネイチャ〜
_/ 最近買ったCD _/ Kate Bush - The Kick Inside
_/ 最近見た映画 _/ 最近見てない