Mar as sìmplidh an obair, is ann as trice a nì mi mearachdan

Mar as sìmplidh an obair, is ann as trice a nì mi mearachdan

Dh'èirich an obair bheag seo aon fheasgar Dihaoine agus bu chòir dha a bhith air 2-3 mionaidean de ùine a thoirt. San fharsaingeachd, mar a bha e an-còmhnaidh.

Dh’ iarr co-obraiche orm an sgriobt a chàradh air an t-seirbheisiche aige. Rinn mi e, thug mi dha e agus thuirt mi gun fhiosta: “Tha an ùine 5 mionaidean luath.” Leig leis an fhrithealaiche an sioncronachadh fhèin a làimhseachadh. leth-uair, chaidh uair a thìde seachad, agus bha e fhathast a’ puffadh agus a’ mallachadh gu sàmhach.

“Gòrach! - smaoinich mi, ag atharrachadh gu consol an fhrithealaiche - ceart gu leòr, gabhaidh mi fois airson mionaid no dhà eile."

Chì sinn ntp, rdate, sdwdate gun stàladh amannanyncd ciorramach agus gun a bhith a 'ruith.

# 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

An seo bheir mi fa-near sa bhad gu bheil an ùine bathar-cruaidh ceart: bidh e nas fhasa seòladh nas fhaide.

Seo far an do thòisich an t-sreath mhearachdan.

A 'chiad mhearachd. Fèin-mhisneachd

Cliog-clack ...

# 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

Tha a h-uile dad gu math, tha an ùine air a shioncronachadh, tha ùine an t-siostaim a ’maidseadh am bathar-cruaidh. “Gabh e,” thuirt mi agus thill mi gu mo ghnìomhachas.

“Gabh dè? - bha an co-obraiche diombach. “Is e an aon àm a th’ ann!”

Mar as motha a dh’ fhuasglas tu duilgheadasan àbhaisteach, is ann as motha a dh’ fhàsas do smaoineachadh blinked agus nach bi thu a’ smaoineachadh tuilleadh gum bi an ceudamh no am mìleamh suidheachadh eadar-dhealaichte, ach chan ann an turas 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

Tha ùine an t-siostaim ceàrr a-rithist.

Feuch sinn a-rithist:

# 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èanamaid e ann an dòigh eadar-dhealaichte:

# 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

Tha an ùine air a shuidheachadh airson diog sgoltadh, agus sa bhad a 'tòiseachadh a' "reubadh" a-rithist.

Aig an aon àm, anns na logaichean, aig àm atharrachadh làimhe mar sin, chan fhaic sinn ach aithisgean siostam gu bheil an ùine air atharrachadh, fa leth, anns an taobh cheart / ceàrr agus uaireannan Ag ath-shioncronachadh bho 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

an seo

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

Aig an ìre seo, bha e riatanach mar-thà a bhith a 'coimhead airson an adhbhar, ach thairis air 18 bliadhna de rianachd, tha an eanchainn air staitistig a chruinneachadh mu mhearachdan "ùine" agus, a-mach à cleachdadh, a-rithist a' cur a 'choire air sioncronadh.
Leig leinn a thionndadh dheth gu tur.

# 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 anns na clàran

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 ath-shioncronachadh à sealladh agus air dhòigh eile tha na logaichean pristine.

A’ sgrùdadh nan co-dhùnaidhean tcpdump air port 123 air a h-uile eadar-aghaidh. Chan eil iarrtasan ann, ach tha ùine fhathast a’ ruith air falbh.

Mearachd a dhà. Rush

Tha uair a thìde air fhàgail gu deireadh na seachdain obrach, agus chan eil mi airson falbh airson an deireadh-sheachdain le duilgheadas beag gun fhuasgladh (na toir aire don ùine sa chòd, chaidh an artaigil a sgrìobhadh anns na làithean a leanas ).
Agus an seo a-rithist, an àite a bhith a 'coimhead airson an adhbhar, thòisich mi a' feuchainn ri mìneachadh a dhèanamh airson an toradh. Bidh mi ag ràdh “innleachd” oir ge bith dè cho loidsigeach ‘s a tha am mìneachadh airson a’ bhuil, tha e na dhòigh lochtach air fuasgladh fhaighinn air an duilgheadas.

Tha am frithealaiche seo na fhrithealaiche sruthadh agus ag atharrachadh an t-sruth DVB-S2 gu IP. Tha clàran-ama anns an t-sruth DVB-S, agus mar sin bidh luchd-glacaidh, ioma-fhillteadairean, scramblers agus telebhiseanan gu tric gan cleachdadh gus gleoc an t-siostaim a shioncronachadh. Tha draibhearan bùird DVB-S air an toirt a-steach don kernel, agus mar sin is e an dòigh as luaithe air dèanamh cinnteach gun tèid an t-sruth DVB-S2 a thoirt air falbh na càbaill a thig bho na “truinnsearan” a dhì-cheangal. Gu fortanach, tha am frithealaiche air cùl a’ bhalla, mar sin biodh e.

Gu dearbh, nam biodh na bu chòir a bhith anns na logaichean, cha bhiodh seo air tachairt, ach barrachd air sin, a-rithist, aig deireadh an artaigil.

Uill, leis gu bheil sinn air a h-uile comharra saideal a thoirt air falbh mar-thà, bheir sinn air falbh feadhainn talmhainn cuideachd - aig an aon àm bidh sinn a’ tarraing a-mach na càballan lìonra gu lèir. Bidh am frithealaiche air a ghearradh dheth bhon t-saoghal a-muigh agus ag obair gu tur fèin-riaghailteach, ach tha gleoc an t-siostaim fhathast ann an cabhaig.

Tha an t-seachdain obrach seachad, agus chan eil a’ chùis ceann-latha/ùine fhèin deatamach, agus mar sin faodaidh tu a dhol dhachaigh, ach an seo nì mi mearachd ùr.

Mearachd tri. Comhairlichean

A-riamh! Na faighnich ceistean gu bràth air fòraman agus làraich speisealta coitcheann (a la stackoverflow) ma tha feum aig an fhreagairt air barrachd air a bhith a’ sgrùdadh a’ chiad duilleag de Google agus a’ leughadh duilleag aon fhear.

Cuiridh iad air ais thu gu Google, leugh iad an aon fhear agus mìnichidh iad gu mòr riaghailtean an fhòraim / làraich, ach cha toir iad freagairt dhut.

Seo cuid de na factaran amas:

  • chan eil fios aig duine ach thu fhèin air an duilgheadas cuideachd;
  • chan urrainn do dhuine sam bith deuchainnean a dhèanamh fo na h-aon chumhachan riut fhèin

agus cuspaireil:

  • is dòcha nach toir thu a h-uile fiosrachadh a-steach airson fuasgladh fhaighinn air an duilgheadas, leis gu bheil thu mu thràth air an stiùireadh “ceart” a lorg agus a ’taisbeanadh brìgh na cùise le fòcas air;
  • tha am maor (modaireatair, seann-timer, rianaire) an-còmhnaidh ceart, ma tha an stiùiriche ceàrr... uill, tha fios agad...

Ma tha thu, nuair a bha thu a’ freagairt bheachdan, air fuireach taobh a-staigh crìochan briathrachais caisgireachd, tha nearbhan làidir agad.

co-dhùnadh

Chan eil feum air gnìomhan a roinn gu sìmplidh agus iom-fhillte.

Bidh sinn a’ stad a bhith an urra ris an eòlas againn, staitistig, comhairlichean agus tòisichidh sinn gun a bhith “a’ mìneachadh ”an toradh deireannach, ach a bhith a’ coimhead airson an adhbhar gu cunbhalach.

Leis gu bheil cuideigin a’ suidheachadh na h-ùine, feumaidh an gairm siostam co-fhreagarrach tachairt.

Dìreach mar ann an sgrìobhainnean bathar-bog is e na sgrìobhainnean as fheàrr na stòran, mar sin ann an rianachd siostaim is e sgrùdadh an neach-cuideachaidh as fheàrr, nar cùise sgrùdadh.

Mionaid de teagamhChaidh mi tron ​​​​mana, ach cha robh mi gu tur cinnteach nach urrainnear an ùine ann an Linux a shuidheachadh ach uair cloc_socraich и suidheachadh an latha, mar sin airson a’ chiad deuchainn thagh mi a h-uile gairm “freagarrach”:

# 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 a' cur air falbh s390_runtime_instr, stime, timerfd_create, a tha cluinntinnctl nach do dh’ aithnich e e, an toiseach chaidh sgrùdadh a chuir air bhog 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

Às deidh dhomh dèanamh cinnteach nach eil logaichean sam bith eile anns na h-àiteachan log anns a bheil ùidh agam sycalls A bharrachd air an dà rud seo, cha do chleachd mi ach iad nas fhaide.

A’ ruith sgrùdadh gairm siostam uair cloc_socraich и suidheachadh an latha agus feuch ris a’ cheann-latha atharrachadh:

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

Tha dàil còig diog air a chuir ris gus am bi ar “parasite” cinnteach gun cuir sinn ceart an ùine.

Bheir sinn sùil air an aithisg:

# 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

An seo chì sinn ar ceann-latha agus gun fhios dhuinn chkcache_pròiseasan. Chrìochnaich e san aithisg gu h-àrd oir bha aureport a’ rèiteach an toraidh a rèir ceann-latha nuair a bha e ag atharrachadh bho dhàn, agus thachair an tachartas aig an àm a shuidhich sinn ceann-latha -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/ionadail/bin/oscam - tha ar parasite air a lorg. A dh 'aindeoin a ghiùlan "droch-mhì-chinnteach", tha e do-dhèanta an siostam ruigsinneachd le cùmhnant a dhiùltadh, ach bu mhath leam fios a bhith agam fhathast oscam, WTF?

Gheibhear am freagairt gu sgiobalta ann an còdan stòr:

#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");
}

Dè cho bòidheach 'sa tha e a' coimhead an seo thuirt a mach loidhne rabhadh...

Source: www.habr.com

Cuir beachd ann