Posponer ntpd

Posponer ntpd

Actualmente estoy intentando reducir el tiempo de arranque de un sistema Linux integrado. Una forma en que pensamos que podríamos hacerlo es posponiendo el script ntp init.d.

El demonio intentó sincronizarse con el servidor a través de la conexión Ethernet. Pero no siempre tenemos esa conexión activa y tarda mucho en arrancar mientras intenta sincronizarse. En nuestro sistema, ntp no es crucial, por lo que se puede iniciar más adelante.

Lo que quería hacer era hacer que el script ntpd init.d esperara unos 5 minutos pero sin bloquear el resto de la operación de arranque.

Este es el S49 en la carpeta init.d que estoy usando:

    #! /bin/sh
    #
    # System-V init script for the openntp daemon
    #

    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    DESC="network time protocol daemon"
    NAME=ntpd
    DAEMON=/usr/sbin/$NAME
    NTPDATE_BIN=/usr/bin/ntpdate

    # Gracefully exit if the package has been removed.
    test -x $DAEMON || exit 0

    # Read config file if it is present.
    if [ -r /etc/default/$NAME ]
    then
        . /etc/default/$NAME
    fi

    case "$1" in
    start)
        if [ -x $NTPDATE_BIN ] ; then
            echo -n "Getting initial time via ntp"
            $NTPDATE_BIN $NTPDATE_OPTS $NTPSERVERS > /dev/null 2>&1
            echo "."
        fi

        echo -n "Starting $DESC: $NAME"
        start-stop-daemon -S -q -x $DAEMON
        echo "."
        ;;
    stop) echo -n "Stopping $DESC: $NAME"
        start-stop-daemon -K -q -n $NAME
        echo "."
        ;;
    reload|force-reload) echo -n "Reloading $DESC configuration..."
        start-stop-daemon -K -q -n $NAME -s 1
        echo "done."
            ;;
    restart) echo "Restarting $DESC: $NAME"
        $0 stop
        sleep 1
        $0 start
        ;;
    *) echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
        exit 1
        ;;
    esac

    exit 0

Respuesta1

Como muestra su script de inicio, su retraso se debe al ntpdatemomento en que comienza.

Este es uno de los errores más comunes al configurar NTP. El propósito del uso ntpdatees que ntpdno salga con un error cuando se inicie. Lo hace si detecta que la diferencia horaria es muy grande. Sin embargo, ntpdtiene la capacidad de ignorar esta diferencia horaria sólo una vez. Entonces, al activar esto, ntpdateya no es necesario.

La solución entonces es desactivar ntpdatey utilizar esta función.

Para hacer esto, todo lo que necesitas hacer es crear /etc/default/ntpdcon lo siguiente:

NTPDATE_BIN="-"
DAEMON="/usr/sbin/ntpd -g"

Esto NTPDATE_BIN="-"es para esta parte del script de inicio:

if [ -x $NTPDATE_BIN ] ; then

Buscará si hay un archivo llamado -que sea ejecutable, pero no lo hay, por lo que omitirá esa sección.
 

El DAEMON="/usr/sbin/ntpd -g"es para esto:

start-stop-daemon -S -q -x $DAEMON

Hará ntpdque se invoque como ntpd -g. La -gopción es la opción que le dice que permita la gran diferencia horaria.

Respuesta2

case "$1" in
start)
    if [ -x $NTPDATE_BIN ] ; then
        echo -n "Getting initial time via ntp"
        $NTPDATE_BIN $NTPDATE_OPTS $NTPSERVERS > /dev/null 2>&1
        echo "."
    fi

ntpdate se ejecuta en el arranque independientemente de todo si se encuentra como ejecutable. Si desea detener este comportamiento, debe eliminar ntpdate usando el administrador de paquetes que tiene o moviendo manualmente el binario.

Modificar el script también es una opción, pero si lo actualiza es probable que se sobrescriba.

información relacionada