Tuesday 1 November 2011

Как да синхронизираме часовника в Линукс с NTP

Един приятел ме попита преди година, как да го направи, че му се разсинхронизираше базата данни всеки 3 дни и часовника му при рестарт показваше 1970-та. Кеф. Още не съм бил роден, Торвалдс е бил бебе а той вече е имал сървер под линукс.

Да не навлизаме в подробности - Казано с два реда, прочетете актуалният час от някой "доверен" NTP сървер и синхронизирайте hwclock по него:

bash-4.1# ntpdate 0.pool.ntp.org
2 Jun 11:08:57 ntpdate[3110]: step time server 94.26.7.48 offset -13.078094 sec
bash-4.1# hwclock --systohc
bash-4.1#

As simple as it is. 2 commands. Естествено, ако имате сървер по-близък от ntp.org, ползвайте него. Всъщност ползвайте който сървер искате, дори и личен, ако имате такъв :D
Може да се направи и на скрипт, ако някой му е необходимо да го стартира:

bash-4.1# touch SyncClock.sh
bash-4.1# cat > SyncClock.sh
#!/usr/bin/bash

echo "Clock is syncing to NTP, please wait..."

sudo /usr/sbin/ntpdate 0.pool.ntp.org
sudo /sbin/hwclock --systohc
^D
bash-4.1# chmod +x SyncClock.sh

Естествено трявбва да се изпълнява като root, или както се прави напоследък в Убунту и други mainstream линукси - sudo без парола ;) което изобщо никому не препоръчвам да прави на сървер. Не знам 'що за гений го е измислил. Май и за туй не ползвам Убунту и производни.

С този скрипт под ръка, може да го сложите в /etc/rc.d/rc.local за да се изпълнява при старт на машината:

bash-4.1# echo -e "\n#Clock sync script\n/root/scripts/SyncClock.sh" >> /etc/rc.d/rc.local

Или още по-добре, сложете го в cron, за да се изпълнява всеки ден. В Slackware се прави лесно:

bash-4.1# cp /root/scripts/SyncClock.sh /etc/cron.daily

Май това е всичко, което трябва да се направи.

No comments:

Post a Comment