named and ntpd start order in rc.d

Nerius Landys nlandys at gmail.com
Wed Dec 3 15:29:53 PST 2008


>> FreeBSD 7.0.  I am having a problem when ntpd starts at bootup.  It
>> continues to have 2 processes running, the process which does the DNS lookup
>> fails to exit, and ntpd fails to adjust the clock even after days of
>> running.  Immediately after bootup and several hours or days later this is
>> what I get:
>>
>> # ps -U root | grep ntpd
>> 87837  ??  Ss     0:00.03 /usr/sbin/ntpd -c /etc/ntp.conf -p
>> /var/run/ntpd.pid
>> 87838  ??  S      0:00.00 /usr/sbin/ntpd -c /etc/ntp.conf -p
>> /var/run/ntpd.pid
>>
>> If I do a "/etc/rc.d/ntpd restart" on a running system it fixes the problem,
>> and only one of the ntpd processes remains, and the clock gets adjusted.
>>
>> I have named running as a caching name server on my system.  The contents of
>> my /etc/resolv.conf:
>>
>> domain  nerius.com
>> nameserver      127.0.0.1
>>
>> My /etc/rc.conf:
>>
>> ...
>> named_enable="YES"
>> ntpd_enable="YES"
>> ...
>>
>> I believe that the problem with ntpd is that named is started AFTER ntpd.
>>
>> Trying to reproduce problem.  On a running system. I shut down named.  Then
>> I restart ntpd, then I start named.  I can reproduce the problem that
>> happens on bootup - ntpd has 2 processes and does not adjust the clock.
>> Restarting ntpd while named is running fixes the problem
>>
>> I believe that the fix for this is to add a dependency to /etc/rc.d/ntpd
>> script, adding "named" to "REQUIRE" section in comments.  In your opinion,
>> is this a robust fix?  For example the line in my /etc/rc.d/ntpd script that
>> looks like so:
>>
>> # REQUIRE: DAEMON ntpdate cleanvar devfs
>>
>> would be changed to this:
>>
>> # REQUIRE: DAEMON ntpdate cleanvar devfs named
>
> Modifying /etc/rc.d/ntpd in this manner did not fix the problem.  I
> still have 2 ntpd processes running indefinitely after bootup of the
> system, until I manually issue a "/etc/rc.d/ntpd restart", after which
> the ntpd runs fine.  As a separate test, I tried adjusting my
> resolv.conf to point to an external name server, and I disabled named
> at startup, and used the original /etc/rc.d/ntpd.  I still got the
> same problem - 2 ntpd processes running indefinitely.
>
> Does anyone know why I'm getting 2 ntpd processes running after bootup
> (and ntpd fails to adjust the clock as a result)?  Any suggested fix
> would be appreciated.
>

I figured out a fix for this problem!
I add ntpdate_enable="YES" to my /etc/rc.conf.  As a result, after
bootup ntpd is running only one process and the clock gets adjusted
gradually after I set it back 30 seconds.

So why does running ntpdate at bootup fix the ntpd 2 process hanging
problem?  Well I had a look at /etc/rc.d/ntpdate:

# REQUIRE: NETWORKING syslogd named

And, ntpd requires ntpdate.

So maybe NETWORKING is the answer to this problem.  Without NETWORKING
DNS lookups cannot happen and the ntpd process that does the DNS
lookups hangs.

So it sounds like if you are gonna run ntpd at startup you'd better
run ntpdate as well.


More information about the freebsd-questions mailing list