Dá simplí an tasc, is minic a dhéanaim botúin

Dá simplí an tasc, is minic a dhéanaim botúin

Tháinig an tasc fánach seo chun cinn tráthnóna Dé hAoine amháin agus ba cheart go dtógfadh sé 2-3 nóiméad ama. Go ginearálta, mar i gcónaí.

D'iarr comhghleacaí orm an script a shocrú ar a fhreastalaí. Rinne mé é, thug mé dó é agus scaoil sé gan chuimhneamh: "Tá an t-am 5 nóiméad tapa." Lig don fhreastalaí an sioncrónú féin a láimhseáil. Leath uair an chloig, uair an chloig a rith, agus puffed sé fós agus go ciúin cursed.

“Dúr! - Shíl mé, ag aistriú go consól an fhreastalaí - ceart go leor, tógfaidh mé sos ar feadh cúpla nóiméad eile."

Ligean ar a fheiceáil ntp, rdate, sdwdate nach bhfuil suiteáilte timesyncd faoi ​​mhíchumas agus nach bhfuil ag rith.

# timedatectl
      Local time: Sun 2019-08-25 20:44:39 +03
  Universal time: Sun 2019-08-25 17:44:39 UTC
        RTC time: Sun 2019-08-25 17:39:52
       Time zone: Europe/Minsk (+03, +0300)
     NTP enabled: no
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

Anseo tabharfaidh mé faoi deara láithreach go bhfuil an t-am crua-earraí ceart: beidh sé níos éasca nascleanúint a dhéanamh níos faide.

Seo nuair a thosaigh an tsraith botúin.

An chéad botún. Féinmhuinín

Cliceáil-cliceáil...

# systemctl enable systemd-timesyncd.service && systemctl start systemd-timesyncd.service && ntpdate 0.ru.pool.ntp.org && timedatectl set-ntp on && timedatectl
25 Aug 21:00:10 ntpdate[28114]: adjust time server 195.210.189.106 offset -249.015251 sec
      Local time: Sun 2019-08-25 21:00:10 +03
  Universal time: Sun 2019-08-25 18:00:10 UTC
        RTC time: Sun 2019-08-25 18:00:10
       Time zone: Europe/Minsk (+03, +0300)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a

Tá gach rud go breá, tá an t-am sioncrónaithe, meaitseálann am an chórais leis an gceann crua-earraí. “Tóg é,” arsa mise agus d’fhill mé ar mo ghnó.

“Tóg cad é? - bhí fearg ar an gcomhghleacaí. “Is é an t-am céanna é!”

Dá mhéad a réitíonn tú gnáthfhadhbanna, is amhlaidh is mó a éiríonn do chuid smaointe blinked agus ní dóigh leat a thuilleadh go mbeidh an céadú nó an míleú cás difriúil, ach ní an uair seo.

# timedatectl
      Local time: Sun 2019-08-25 21:09:15 +03
  Universal time: Sun 2019-08-25 18:09:15 UTC
        RTC time: Sun 2019-08-25 18:05:04
       Time zone: Europe/Minsk (+03, +0300)
     NTP enabled: yes
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

Tá am an chórais mícheart arís.

Déanaimis iarracht arís:

# ntpdate 0.ru.pool.ntp.org && timedatectl && sleep 1 && timedatectl
25 Aug 21:07:37 ntpdate[30350]: step time server 89.175.20.7 offset -249.220828 sec
      Local time: Sun 2019-08-25 21:07:37 +03
  Universal time: Sun 2019-08-25 18:07:37 UTC
        RTC time: Sun 2019-08-25 18:07:37
       Time zone: Europe/Minsk (+03, +0300)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a
      Local time: Sun 2019-08-25 21:11:46 +03
  Universal time: Sun 2019-08-25 18:11:46 UTC
        RTC time: Sun 2019-08-25 18:07:37
       Time zone: Europe/Minsk (+03, +0300)
     NTP enabled: yes
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

Déanaimis é ar bhealach difriúil:

# date -s "2019-08-25 21:10:30" && date && sleep 1 && timedatectl
Sun Aug 25 21:10:30 +03 2019
Sun Aug 25 21:10:30 +03 2019
      Local time: Sun 2019-08-25 21:14:36 +03
  Universal time: Sun 2019-08-25 18:14:36 UTC
        RTC time: Sun 2019-08-25 18:10:30
       Time zone: Europe/Minsk (+03, +0300)
     NTP enabled: yes
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

Agus mar seo:

# hwclock --hctosys && timedatectl && sleep 1 && timedatectl
      Local time: Sun 2019-08-25 21:11:31 +03
  Universal time: Sun 2019-08-25 18:11:31 UTC
        RTC time: Sun 2019-08-25 18:11:31
       Time zone: Europe/Minsk (+03, +0300)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a
      Local time: Sun 2019-08-25 21:15:36 +03
  Universal time: Sun 2019-08-25 18:15:36 UTC
        RTC time: Sun 2019-08-25 18:11:32
       Time zone: Europe/Minsk (+03, +0300)
     NTP enabled: yes
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

Socraítear an t-am le haghaidh soicind scoilte, agus tosaíonn ag “Rothadh” arís láithreach.

Ag an am céanna, sna logaí, tráth an athraithe láimhe den sórt sin, ní fheicimid ach tuairiscí córais go bhfuil an t-am athraithe, faoi seach, sa treo ceart / mícheart agus ó am go chéile Ag athshioncronú ó systemd-timesyncd.

Aug 25 21:18:51 wisi systemd[1]: Time has been changed
Aug 25 21:18:51 wisi systemd-timesyncd[29258]: System time changed. Resyncing.
Aug 25 21:18:51 wisi systemd[1187]: Time has been changed
Aug 25 21:18:51 wisi systemd[1]: Time has been changed
Aug 25 21:18:51 wisi systemd[1187]: Time has been changed

anseo

# ps afx | grep "[1]187"
 1187 ?        Ss     0:02 /lib/systemd/systemd --user

Ag an bpointe seo, bhí sé riachtanach cheana féin an chúis a chuardach, ach thar 18 mbliana riaracháin, tá staitisticí carntha ag an inchinn ar earráidí “am” agus, as an nós, cuireann sé an milleán ar shioncrónú arís.
Déanaimis é a mhúchadh go hiomlán.

# timedatectl set-ntp off && systemctl stop systemd-timesyncd.service
# hwclock --hctosys && timedatectl && sleep 1 && timedatectl
      Local time: Sun 2019-08-25 21:25:40 +03
  Universal time: Sun 2019-08-25 18:25:40 UTC
        RTC time: Sun 2019-08-25 18:25:40
       Time zone: Europe/Minsk (+03, +0300)
     NTP enabled: no
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a
      Local time: Sun 2019-08-25 21:29:31 +03
  Universal time: Sun 2019-08-25 18:29:31 UTC
        RTC time: Sun 2019-08-25 18:25:41
       Time zone: Europe/Minsk (+03, +0300)
     NTP enabled: no
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

agus sna logs

Aug 25 21:25:40 wisi systemd[1]: Time has been changed
Aug 25 21:25:40 wisi systemd[1187]: Time has been changed
Aug 25 21:29:30 wisi systemd[1]: Time has been changed
Aug 25 21:29:30 wisi systemd[1187]: Time has been changed

Ag athshioncronú imithe agus ar shlí eile tá na lomáin gan staonadh.

Na conclúidí a sheiceáil tcpdump ar phort 123 ar gach comhéadain. Níl aon iarrataí ann, ach tá am ag rith fós.

Earráid a dó. Rush

Tá uair an chloig fágtha go dtí deireadh na seachtaine oibre, agus nílim ag iarraidh imeacht don deireadh seachtaine le fadhb fánach gan réiteach (ná tabhair aird ar an am sa chód, scríobhadh an t-alt sna laethanta ina dhiaidh sin ).
Agus anseo arís, in ionad an chúis a chuardach, thosaigh mé ag iarraidh teacht suas le míniú ar an toradh. Deirim “invent” mar is cuma cé chomh loighciúil is atá an míniú ar an toradh, is cur chuige lochtach é chun an fhadhb a réiteach.

Is freastalaí sruthaithe é an freastalaí seo agus athraíonn sé an sruth DVB-S2 go IP. Tá stampaí ama sa sruth DVB-S, mar sin is minic a úsáideann glacadóirí, ilphléacsóirí, scramblers agus teilifíseáin iad chun clog an chórais a shioncronú. Tá tiománaithe boird DVB-S ionsuite san eithne, mar sin is é an bealach is tapúla chun a chinntiú go mbaintear an sruth DVB-S2 amach ná na cáblaí a thagann ó na “plátaí” a dhícheangal. Ar ámharaí an tsaoil, tá an freastalaí taobh thiar den bhalla, mar sin bíodh.

Ar ndóigh, dá mbeadh an rud ba cheart a bheith sna logaí, ní bheadh ​​​​sé seo tar éis tarlú, ach níos mó ar sin, arís, ag deireadh an ailt.

Bhuel, ós rud é go bhfuil gach comhartha satailíte bainte againn cheana féin, bainfimid na cinn trastíre freisin - ag an am céanna tarraingimid amach na cáblaí líonra go léir. Éiríonn an freastalaí scoite amach ón domhan lasmuigh agus oibríonn sé go hiomlán uathrialach, ach tá clog an chórais fós i Hurry.

Tá an tseachtain oibre thart, agus níl an tsaincheist dáta / ama féin ríthábhachtach, mar sin is féidir leat dul abhaile, ach anseo déanaim botún nua.

Earráid a trí. Comhairleoirí

Riamh! Ná cuir ceisteanna ar fhóraim agus ar shuímh ghinearálta speisialaithe (a la stackoverflow) riamh má éilíonn an freagra air níos mó ná staidéar a dhéanamh ar an gcéad leathanach de Google agus leathanach fear amháin a léamh.

Seolfaidh siad ar ais chuig Google tú, léifidh siad an fear céanna agus míneoidh siad go coitianta rialacha an fhóraim/suímh, ach ní thabharfaidh siad freagra duit.

Seo a leanas roinnt fachtóirí oibiachtúla:

  • ní féidir le duine ar bith ach an fhadhb a fhios agat freisin;
  • ní féidir le haon duine tástálacha a dhéanamh faoi na coinníollacha céanna leatsa

agus suibiachtúla:

  • b'fhéidir nach dtabharfaidh tú an t-ionchur go léir chun an fhadhb a réiteach, toisc go bhfuil tú tar éis teacht suas leis an treo "ceart" cheana féin agus go bhfuil tú ag cur bunbhrí na ceiste i láthair ag díriú air;
  • bíonn an saoiste (moderator, sean-uaineadóir, riarthóir) i gcónaí ceart, má tá an saoiste mícheart... bhuel, tá a fhios agat...

Más rud é, agus tú ag tabhairt freagra ar thuairimí, gur fhan tú laistigh de theorainneacha an stór focal cinsireachta, tá nerves láidre agat.

cinneadh

Ní gá tascanna a roinnt ina tascanna simplí agus casta.

Stopaimid ag brath ar ár dtaithí, ar ár staitisticí, ar ár gcomhairleoirí agus tosaímid gan “a mhíniú” ar an toradh deiridh, ach an chúis a chuardach go seasta.

Ós rud é go leagann duine éigin an t-am, ní mór an glao córas comhfhreagrach a tharlaíonn.

Díreach mar atá i ndoiciméadú bogearraí is iad na doiciméid is fearr na foinsí, mar sin i riarachán an chórais is é an cúntóir is fearr iniúchadh, inár gcás iniúchta.

Nóiméad amhraisChuaigh mé tríd an mana, ach ní raibh mé cinnte go hiomlán nach féidir ach an t-am i Linux a shocrú clog_socraithe и am socraithe an lae, mar sin don chéad triail roghnaigh mé na glaonna “oiriúnacha” go léir:

# man syscalls | col | grep -F '(2)' | grep -vE '(:|;)' | grep -E '(time|date|clock)' | sed "s/(2).*//" | xargs -I SYSCALL echo "-S SYSCALL " | xargs echo
-S adjtimex -S clock_adjtime -S clock_getres -S clock_gettime -S clock_nanosleep -S clock_settime -S futimesat -S getitimer -S gettimeofday -S mq_timedreceive -S mq_timedsend -S rt_sigtimedwait -S s390_runtime_instr -S setitimer -S settimeofday -S stime -S time -S timer_create -S timer_delete -S timer_getoverrun -S timer_gettime -S timer_settime -S timerfd_create -S timerfd_gettime -S timerfd_settime -S times -S utime -S utimensat -S utimes

agus caitheamh ar shiúl s390_runtime_instr, stime, timerfd_create, a iniúchadhctl níor aithin sé é, seoladh iniúchadh ar dtús san fhoirm:

auditctl -a exit,always -S adjtimex -S clock_adjtime -S clock_getres -S clock_nanosleep -S clock_settime -S futimesat -S getitimer -S gettimeofday -S mq_timedreceive -S mq_timedsend -S rt_sigtimedwait -S semtimedop -S setitimer -S settimeofday -S time -S timer_create -S timer_delete -S timer_getoverrun -S timer_gettime -S timer_settime -S timerfd_gettime -S timerfd_settime -S times -S utime -S utimensat -S utimes

Tar éis a chinntiú nach bhfuil aon logaí eile sna suíomhanna logála a bhfuil suim agam iontu córais Seachas an dá cheann seo, níor úsáid mé ach iad a thuilleadh.

Iniúchadh glaonna córais a rith clog_socraithe и am socraithe an lae agus déan iarracht an dáta a athrú:

# auditctl -a exit,always -S clock_settime -S settimeofday && date -s "2019-08-22 12:10:00" && sleep 5 && auditctl -D

Cuirtear moill cúig soicind leis ionas go mbeidh ár “parasite” cinnte go gceartóidh sé an t-am.

Breathnaímis ar an tuairisc:

# aureport -s -i

Syscall Report
=======================================
# date time syscall pid comm auid event
=======================================
Warning - freq is non-zero and incremental flushing not selected.
1. 08/22/2019 12:10:00 settimeofday 3088 chkcache_proces root 479630
2. 08/26/2019 09:37:06 clock_settime 1538 date root 479629

Anseo feicimid ár sonraí agus anaithnid dúinn chkcache_próisis. Chríochnaigh sé sa tuarascáil thuas toisc gur shórtáil aureport an t-aschur de réir dáta nuair a bhí sé á thiontú ó dhénártha, agus tharla an teagmhas ag an am a shocraíomar dáta -s"2019-08-22 12:10:00".
Cé thug breith air?

# ausearch -sc settimeofday --comm "chkcache_proces"
----
time->Thu Aug 22 12:10:00 2019
type=PROCTITLE msg=audit(1566465000.000:479630): proctitle="/usr/local/bin/oscam"
type=SYSCALL msg=audit(1566465000.000:479630): arch=c000003e syscall=164 success=yes exit=0 a0=7fde0dfc6e60 a1=0 a2=136cf a3=713ba56 items=0 ppid=3081 pid=3088 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts20 ses=68149 comm="chkcache_proces" exe="/usr/local/bin/oscam" key=(null)

/usr/áitiúil/bin/oscam - tá ár parasite aimsithe. In ainneoin a iompar “mailíseach”, ní féidir diúltú don chóras rochtana coinníollach, ach ba mhaith liom a fháil amach fós oscam, WTF?

Faightear an freagra go tapa i cóid foinse:

#if defined(CLOCKFIX)
if (tv.tv_sec > lasttime.tv_sec || (tv.tv_sec == lasttime.tv_sec && tv.tv_usec >= lasttime.tv_usec)) // check for time issues!
{
  lasttime = tv; // register this valid time
}
  else
{
  tv = lasttime;
  settimeofday(&tv, NULL); // set time back to last known valid time
  //fprintf(stderr, "*** WARNING: BAD TIME AFFECTING WHOLE OSCAM ECM HANDLING, SYSTEMTIME SET TO LAST KNOWN VALID TIME **** n");
}

Cé chomh gleoite tá sé anseo trácht amach líne rabhadh...

Foinse: will.com

Add a comment