ntpd verschieben

ntpd verschieben

Ich versuche derzeit, die Startzeit eines eingebetteten Linux-Systems zu verkürzen. Wir dachten, dass wir das unter anderem erreichen könnten, indem wir das NTP-Skript init.d verschieben.

Der Daemon hat versucht, sich über die Ethernet-Verbindung mit dem Server zu synchronisieren. Aber wir haben diese Verbindung nicht immer und der Startvorgang dauert lange, während er versucht, sich zu synchronisieren. In unserem System ist NTP nicht entscheidend, daher kann es zu einem späteren Zeitpunkt gestartet werden.

Ich wollte, dass das Skript ntpd init.d etwa 5 Minuten wartet, ohne jedoch den Rest des Startvorgangs zu blockieren.

Dies ist der S49 im init.d-Ordner, den ich verwende:

    #! /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

Antwort1

ntpdateWie Ihr Init-Skript zeigt, wird Ihre Verzögerung durch den Startzeitpunkt verursacht .

Dies ist einer der häufigsten Fehler beim Einrichten von NTP. Der Zweck der Verwendung ntpdatebesteht darin, dass ntpdbeim Start kein Fehler auftritt. Dies geschieht, wenn festgestellt wird, dass der Zeitunterschied sehr groß ist. ntpdEs besteht jedoch die Möglichkeit, diesen Zeitunterschied nur einmal zu ignorieren. Wenn Sie dies aktivieren, ntpdateist dies nicht mehr erforderlich.

Die Lösung besteht dann darin, ntpdatediese Funktion zu deaktivieren und zu verwenden.

Dazu müssen Sie lediglich /etc/default/ntpdFolgendes erstellen:

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

Das NTPDATE_BIN="-"ist für diesen Teil des Init-Skripts:

if [ -x $NTPDATE_BIN ] ; then

Es wird geprüft, ob eine -ausführbare Datei mit dem Namen vorhanden ist. Dies ist nicht der Fall. Daher wird dieser Abschnitt übersprungen.
 

Das DAEMON="/usr/sbin/ntpd -g"ist hierfür:

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

Es wird ntpdaufgerufen als ntpd -g. Die -gOption ist die Option, die angibt, dass der große Zeitunterschied zugelassen werden soll.

Antwort2

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 wird beim Booten unabhängig von allem ausgeführt, wenn es als ausführbare Datei gefunden wird. Wenn Sie dieses Verhalten unterbinden möchten, sollten Sie ntpdate mit Ihrem vorhandenen Paketmanager entfernen oder die Binärdatei manuell verschieben.

Sie können das Skript auch ändern, es besteht jedoch die Möglichkeit, dass es bei einer Aktualisierung überschrieben wird.

verwandte Informationen