ntpd 연기

ntpd 연기

현재 임베디드 Linux 시스템의 부팅 시간을 개선하려고 노력 중입니다. 이것이 가능하다고 생각되는 한 가지 방법은 ntp init.d 스크립트를 연기하는 것입니다.

데몬은 이더넷 연결을 통해 서버와 동기화를 시도합니다. 하지만 항상 이 연결을 유지하는 것은 아니며 동기화를 시도할 때 시작하는 데 시간이 오래 걸립니다. 우리 시스템에서는 ntp가 중요하지 않으므로 나중에 시작할 수 있습니다.

내가 원하는 것은 ntpd init.d 스크립트가 약 5분 동안 기다리도록 하고 나머지 부팅 작업을 차단하지 않도록 하는 것입니다.

이것은 내가 사용하고 있는 init.d 폴더의 S49입니다.

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

답변1

초기화 스크립트에서 볼 수 있듯이 ntpdate시작하는 데 걸리는 시간으로 인해 지연이 발생합니다.

이는 NTP를 설정할 때 가장 흔한 실수 중 하나입니다. 사용 목적은 시작 시 오류 없이 종료하는 것 ntpdate입니다 . ntpd시간에서 매우 큰 차이가 감지되면 이 작업을 수행합니다. 하지만 ntpd나에겐 이 시차를 무시할 수 있는 능력이 있다. 따라서 ntpdate더 이상 이 기능을 설정할 필요가 없습니다.

ntpdate해결 방법은 이 기능을 비활성화하고 사용하는 것입니다 .

이렇게 하려면 다음을 /etc/default/ntpd사용하여 만들기만 하면 됩니다.

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

NTPDATE_BIN="-"초기화 스크립트의 다음 부분은 다음과 같습니다 .

if [ -x $NTPDATE_BIN ] ; then

라는 실행 파일 이 있는지 확인하고 -, 없으면 해당 부분을 건너뜁니다.
 

이것은 DAEMON="/usr/sbin/ntpd -g"다음과 같습니다.

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

이 옵션은 더 큰 시간 차이를 허용하도록 지시 합니다 ntpd.ntpd -g-g

답변2

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가 실행 가능한 것으로 확인되면 ntpdate는 시작 시 다른 모든 것과 독립적으로 실행됩니다. 이 동작을 중지하려면 패키지 관리자를 사용하여 ntpdate를 제거하거나 바이너리를 수동으로 이동해야 합니다.

스크립트를 수정하는 것도 선택 사항이지만 업데이트하면 덮어쓰게 될 수 있습니다.

관련 정보