Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2014-11-21 10:13:58

  ethanak - Użytkownik

ethanak
Użytkownik
Skąd: Ungwenor
Zarejestrowany: 2010-07-19
Serwis

[SOLVED] Jak sprawdzić czy mam aktualny czas w systemie?

Witam

Sytuacja taka:

Stoi sobie RPi - bez sprzętowego zegara, podpięty za to do netu.
Na maszynce działa sobie z crona (co minutę) pewien Bardzo Ważny Program, który potrzebuje wiedzieć która mianowicie jest godzina (rożnica kilku minut między rzeczywistą godziną a tą na malince ma niewielkie znaczenie).
W związku z tym Bardzo Ważny Program powinien sprawdzić, czy maszynka pobrała sobie z sieci aktualny czas, bo jeśli nie - przekazuje sterowanie innemu ustrojstwu (np. po awarii zasilania, rpi wstał ale router nie).
Sprawdzenie najchętniej poprzez sprawdzenie, czy istnieje jakiś tam pliczek w /run/shm...
Dodatkowo konieczne jest, aby maszynka próbowała ten czas pobrać aż do skutku.

Jakiś pomysł? Bo ja jeden mam ale wydaje mi się brzydki, nie będę nic sugerować, a zastosuję w ostateczności jeśli do niedzieli niczego mądrzejszego nie znajdę...

PS. Tak, wiem, zakup zegara sprzętowego byłby najlepszym rozwiązaniem, ale akurat nie było takich jak chciałem, a lutowanie czegokolwiek we flakach RPi dla faceta który pierwszy raz od kilkunastu lat bierze do ręki lutownicę to chyba nie jest najlepszy pomysł...

Ostatnio edytowany przez ethanak (2014-11-21 11:07:10)


Nim mechaniczne larum zagrasz mi, kanalio,
głosząc nadejście Javy - śmiertelnego wroga!
[i]Zespół Adwokacki Dyskrecja[/i]

Offline

 

#2  2014-11-21 10:22:09

  ilin - Palacz

ilin
Palacz
Skąd: PRLu
Zarejestrowany: 2006-05-03

Re: [SOLVED] Jak sprawdzić czy mam aktualny czas w systemie?

Kod:

ntpdate-debian

do crona ?


[b]Problemy rozwiązujemy na forum nie na PW[/b] -> Niech inni na tym skorzystają.
[url=http://dug.net.pl/]Polski portal Debiana[/url]

Offline

 

#3  2014-11-21 11:06:48

  ethanak - Użytkownik

ethanak
Użytkownik
Skąd: Ungwenor
Zarejestrowany: 2010-07-19
Serwis

Re: [SOLVED] Jak sprawdzić czy mam aktualny czas w systemie?

Dzięki - zrobię pewnie coś w stylu:

Kod:

if [ ! -f /run/shm/date_ok ] ; then
  ntpdate cośtam && touch /run/shm/date_ok
fi
exec BardzoWażnyProgram

Nim mechaniczne larum zagrasz mi, kanalio,
głosząc nadejście Javy - śmiertelnego wroga!
[i]Zespół Adwokacki Dyskrecja[/i]

Offline

 

#4  2014-11-21 15:15:27

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Jak sprawdzić czy mam aktualny czas w systemie?

Ja mam do crona wrzucony skrypt:

Kod:

root:~# cat /etc/cron.hourly/synchronizacja_czasu
#!/bin/bash

# ntp.task.gda.pl
SERVER="153.19.250.123"

if [ ! -x /usr/bin/rdate ]; then
        echo -e "ERROR: there's no \"rdate\" package installed in this system"
        exit 1
fi

RESULT=`ping -W 1 -c 1 $SERVER | grep 'bytes from '`
if [ $? -gt 0 ]; then
        echo -e "`date +'%Y/%m/%d %H:%M:%S'` - host $SERVER is \033[0;31mdown\033[0m"
        exit 1
else
#       echo -e "`date +'%Y/%m/%d %H:%M:%S'` - host $SERVER is \033[0;32mok\033[0m -`echo $RESULT | cut -d ':' -f 2`"
        rm -f /etc/adjtime > /dev/null
        nice -n -20 ionice -n 0 -c 1 rdate -v $SERVER > /dev/null
        hwclock --systohc --utc > /dev/null
fi

exit 0

Co godzinę aktualizuje sobie czas i jak serwer czasu nie odpowiada z jakiegoś powodu to pluje błędami i cron zgłasza, także łatwo się połapać czy czas się synchronizuje. Podobny kawałek mam też wrzucony do autostartu systemu, tak by mi się czas przed zalogowaniem ustawiał na poprawny i póki co działa. xD

Offline

 

#5  2014-11-21 15:56:09

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: [SOLVED] Jak sprawdzić czy mam aktualny czas w systemie?

@up

Jak już robimy festiwal skryptologicznej aktualizacji czasu:

Kod:

#!/bin/bash

MYPID="$$"
echo $MYPID >>/cgroup/net_cls/users/netout/tasks;
grep netout /proc/self/cgroup 2>&1 >/dev/null || exit 1;
echo -e "Godzinę nastawiam ;)\n";
rm -f /etc/adjtime
rdate -s -p ntp.task.gda.pl;
hwclock --systohc --utc;
echo -e "Czas nastawiony ;)\n";
exit 0;

Też siedzi w Cronie (/etc/cron.hourly/).


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#6  2014-11-21 16:04:49

  ethanak - Użytkownik

ethanak
Użytkownik
Skąd: Ungwenor
Zarejestrowany: 2010-07-19
Serwis

Re: [SOLVED] Jak sprawdzić czy mam aktualny czas w systemie?

fajnie ale u mnie polecenie hwclock z przyczyn oczywistych nie zadziała (jak któryś z was nie wie czemu polecam przeczytanie pierwszego posta w wątku, ew. w razie niezrozumienia pętlę w stylu

Kod:

do {
read (first_post) ;
} until understood

sensowne porady mile widziane - pkzpm zostawcie sobie na długie wieczory przy kominku.


Nim mechaniczne larum zagrasz mi, kanalio,
głosząc nadejście Javy - śmiertelnego wroga!
[i]Zespół Adwokacki Dyskrecja[/i]

Offline

 

#7  2014-11-21 18:12:02

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Jak sprawdzić czy mam aktualny czas w systemie?

No to sobie wyrzuć tę linijkę i aktualizuj czas systemowy tylko -- tam masz przecie zrobione to przez rdate.

Jacekalex -- co do twojego skryptu to ja go tam kiedyś przerabiałem, bo u mnie cron ciągle słał mi maile z komunikatami, że czas nastawia. xD Ja sobie to przerobiłem trochę tak by sprawdzał czy rdate w ogóle w systemie jest zainstalowany, czy serwer czasu odpowiada, nadałem priorytet dla procesu i na wypadek problemów dopiero by cron słał maila, że nie udało się zsynchronizować czasu. Przy starcie systemu skrypt jest wywoływany tylko w trybie verbose, zgłasza czas pingu do serwera czasu + o ile poprawił czas przy synchronizacji.

Offline

 

#8  2014-11-21 18:32:02

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: [SOLVED] Jak sprawdzić czy mam aktualny czas w systemie?

U mnie Cron w ogóle wysyła maile do /dev/null, do dziwactw w logach zatrudniam zazwyczaj logchecka.


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#9  2014-11-21 21:51:00

  uzytkownikubunt - Zbanowany

uzytkownikubunt
Zbanowany
Zarejestrowany: 2012-04-25

Re: [SOLVED] Jak sprawdzić czy mam aktualny czas w systemie?

1264

Ostatnio edytowany przez uzytkownikubunt (2016-12-01 01:03:05)

Offline

 

#10  2014-11-22 08:08:36

  qluk - Pan inż. Cyc

qluk
Pan inż. Cyc
Skąd: Katowice
Zarejestrowany: 2006-05-22

Re: [SOLVED] Jak sprawdzić czy mam aktualny czas w systemie?

Przerost formy nad treścią bo ntpd sam się synchronizuje, ale jak ktoś lubi lub nie potrzebuje całego ntpd

Kod:

10 4 * * * ntpdate -s ip/serwer

[quote=uzytkownikubunt]Tak z ciekawości: jaki błąd może dawać RTC w przeciętnym laptopie? Dla Raspberry s;rawdziłem i można było kupić układ określany jako super dokładny i producent deklarował 2 ppm w całkiem sporym zakresie temperatur. Ciekawy jestem jak to wygląda w przeciętnym laptopie.[/quote]
Sprawdzić doświadczalnie przy użyciu poleceń ntpq.

Dla zgłębienia tematu polecam

Kod:

http://www.ntp.org/ntpfaq/NTP-s-algo.htm

Offline

 

#11  2014-11-22 10:46:42

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Jak sprawdzić czy mam aktualny czas w systemie?

ntpdate is a deprecated computer program used to quickly synchronize and set computers' date and time by querying a Network Time Protocol (NTP) server. It is available for a wide variety of unix-like operating systems.[/quote]
Lepiej unikać takich staroci. xD

Offline

 

#12  2014-11-22 12:57:41

  ethanak - Użytkownik

ethanak
Użytkownik
Skąd: Ungwenor
Zarejestrowany: 2010-07-19
Serwis

Re: [SOLVED] Jak sprawdzić czy mam aktualny czas w systemie?

w tej chwili mam coś takiego:
- odpalony ntpd (przylazł razem z raspbianem, działa zacnie)
- zamiast ntpdate zastosowałem sntp (wywoływany po starcie systemu do skutku, aby program miał informację o tym czy czas jest aktualny).
mam nadzieję, że dopisanie do sudoers informacji, że użytkownik kaloryfer może wykonać sntp bez hasła wystarczy...
w każdym razie całość wydaje się działać, jutro test na dym :)


Nim mechaniczne larum zagrasz mi, kanalio,
głosząc nadejście Javy - śmiertelnego wroga!
[i]Zespół Adwokacki Dyskrecja[/i]

Offline

 

#13  2014-11-22 13:17:16

  qluk - Pan inż. Cyc

qluk
Pan inż. Cyc
Skąd: Katowice
Zarejestrowany: 2006-05-22

Re: [SOLVED] Jak sprawdzić czy mam aktualny czas w systemie?

[quote=morfik]

ntpdate is a deprecated computer program used to quickly synchronize and set computers' date and time by querying a Network Time Protocol (NTP) server. It is available for a wide variety of unix-like operating systems.[/quote]
Lepiej unikać takich staroci. xD[/quote]
Bo obecnie głównie stosuje się ntpd niezależnie czy ma to być dodatkowo serwer czasu czy nie. Do tego ntpd ma wbudowany mechanizm pollingu więc nie wymaga jakiś wymyślnych skryptów. Stąd nie widzę sensu stosowania skryptów, podobnie jak ntpdate właśnie z tego powodu jest "deprecated".

Offline

 

#14  2014-11-22 13:22:25

  ethanak - Użytkownik

ethanak
Użytkownik
Skąd: Ungwenor
Zarejestrowany: 2010-07-19
Serwis

Re: [SOLVED] Jak sprawdzić czy mam aktualny czas w systemie?

a jak z ntpd wydobyć informację czy czas jest aktualny? bo na czymś takim najbardziej by mi zależało...


Nim mechaniczne larum zagrasz mi, kanalio,
głosząc nadejście Javy - śmiertelnego wroga!
[i]Zespół Adwokacki Dyskrecja[/i]

Offline

 

#15  2014-11-22 13:24:22

  qluk - Pan inż. Cyc

qluk
Pan inż. Cyc
Skąd: Katowice
Zarejestrowany: 2006-05-22

Re: [SOLVED] Jak sprawdzić czy mam aktualny czas w systemie?

Kod:

ntpq -p

Lista źródeł czasu, jitter, informacji o typie źródła, offsecie, opóźnieniu w transmisji, o zastosowaniu źródła w korygowaniu, itd.

Offline

 

#16  2014-11-22 13:27:44

  ethanak - Użytkownik

ethanak
Użytkownik
Skąd: Ungwenor
Zarejestrowany: 2010-07-19
Serwis

Re: [SOLVED] Jak sprawdzić czy mam aktualny czas w systemie?

hm... sprawdzę w domu, ale dzisiaj czytałem sobie mana do ntpq i jakoś nie bardzo kojarzę aby taką informację podawał. możesz coś bliżej?


Nim mechaniczne larum zagrasz mi, kanalio,
głosząc nadejście Javy - śmiertelnego wroga!
[i]Zespół Adwokacki Dyskrecja[/i]

Offline

 

#17  2014-11-22 13:30:31

  qluk - Pan inż. Cyc

qluk
Pan inż. Cyc
Skąd: Katowice
Zarejestrowany: 2006-05-22

Re: [SOLVED] Jak sprawdzić czy mam aktualny czas w systemie?

Kod:

ntpstat

Choć ciebie pewnie to bardziej interesuje.

Offline

 

#18  2014-11-22 13:32:36

  ethanak - Użytkownik

ethanak
Użytkownik
Skąd: Ungwenor
Zarejestrowany: 2010-07-19
Serwis

Re: [SOLVED] Jak sprawdzić czy mam aktualny czas w systemie?

sprawdzę - w każdym razie dzięki za informacje.


Nim mechaniczne larum zagrasz mi, kanalio,
głosząc nadejście Javy - śmiertelnego wroga!
[i]Zespół Adwokacki Dyskrecja[/i]

Offline

 

#19  2014-11-22 21:45:53

  rulezdc - Członek DUG

rulezdc
Członek DUG
Skąd: Tarnowskie Góry
Zarejestrowany: 2007-05-22

Re: [SOLVED] Jak sprawdzić czy mam aktualny czas w systemie?

Jeszcze możesz sprawdzić protokół ptp
[www]http://linuxptp.sourceforge.net/[/www]

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)

[ Generated in 0.009 seconds, 11 queries executed ]

Informacje debugowania

Time (s) Query
0.00010 SET CHARSET latin2
0.00004 SET NAMES latin2
0.00131 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='18.188.91.223' WHERE u.id=1
0.00074 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.188.91.223', 1732812403)
0.00024 SELECT * FROM punbb_online WHERE logged<1732812103
0.00045 SELECT topic_id FROM punbb_posts WHERE id=279144
0.00021 SELECT id FROM punbb_posts WHERE topic_id=26709 ORDER BY posted
0.00032 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=26709 AND t.moved_to IS NULL
0.00023 SELECT search_for, replace_with FROM punbb_censoring
0.00115 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=26709 ORDER BY p.id LIMIT 0,25
0.00099 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=26709
Total query time: 0.00578 s