Ntchitoyo ikakhala yosavuta, m'pamenenso ndimalakwitsa nthawi zambiri

Ntchitoyo ikakhala yosavuta, m'pamenenso ndimalakwitsa nthawi zambiri

Ntchito yaying'ono iyi idayamba Lachisanu masana ndipo iyenera kutenga nthawi ya mphindi 2-3. Nthawi zonse, monga nthawi zonse.

Mnzanga wina adandifunsa kuti ndikonze script pa seva yake. Ndidachita, ndikumupatsa ndikugwetsa mosadziwa: "Nthawi imathamanga mphindi 5." Lolani seva izigwira ntchito yolumikizana yokha. Theka la ola, ola linadutsa, ndipo adadzitukumulabe ndikutukwana mwakachetechete.

“Wopusa! - Ndinaganiza, ndikusinthira ku seva ya seva - chabwino, ndipumula kwa mphindi zingapo. "

Tiyeni tiwone ntp, date, sdwdate osayikidwa chantho olumala komanso osathamanga.

# 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

Pano ndiwona nthawi yomweyo kuti nthawi ya hardware ndi yolondola: zidzakhala zosavuta kuyenda mopitirira.

Apa ndi pamene zolakwa zingapo zinayambira.

Kulakwitsa koyamba. Kudzidalira

Dinani-click...

# 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

Chilichonse chili bwino, nthawi imalumikizidwa, nthawi yadongosolo imagwirizana ndi hardware imodzi. “Tengani,” ndinatero ndi kubwerera ku bizinesi yanga.

“Mutenge chiyani? - mnzakeyo adakwiya. "Ndi nthawi yomweyo!"

Mukamathetsa mavuto ambiri, m'pamenenso kuganiza kwanu kumayamba kuthwanima ndipo simuganizanso kuti za zana kapena chikwi zikhala zosiyana, koma osati nthawi ino.

# 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

Nthawi yadongosolo ndiyolakwikanso.

Tiyeni tiyesenso:

# 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

Tiyeni tichite mosiyana:

# 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

Ndipo monga chonchi:

# 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

Nthawi yakhazikitsidwa kwa sekondi yogawanika, ndipo nthawi yomweyo imayamba "kuthamanga" kachiwiri.

Panthawi imodzimodziyo, mu zipika, pa nthawi ya kusintha kwa bukhuli, timawona malipoti a dongosolo okha kuti nthawi yasintha, motsatira njira yoyenera / yolakwika komanso nthawi zina. Kuyanjanitsanso kuchokera ku 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

apa

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

Panthawiyi, kunali kofunikira kale kuyang'ana chifukwa chake, koma pazaka 18 za utsogoleri, ubongo wasonkhanitsa ziwerengero pa zolakwika za "nthawi" ndipo, mwachizoloŵezi, amatsutsanso kugwirizanitsa.
Tiyeni tizimitse kwathunthu.

# 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

ndi m’zipika

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

Kuyanjanitsanso zinasowa ndipo apo ayi zipika ndi pristine.

Kuyang'ana ziganizo wcputu pa doko 123 pamawonekedwe onse. Palibe zopempha, koma nthawi ikuthawabe.

Zolakwika ziwiri. Kuthamanga

Kwatsala ola limodzi mpaka kumapeto kwa sabata lantchito, ndipo sindikufuna kupita kumapeto kwa sabata ndi vuto losasinthika (musalabadira nthawi yomwe ili mu code, nkhaniyo idalembedwa m'masiku otsatirawa. ).
Ndipo apa kachiwiri, m'malo moyang'ana chifukwa, ndinayamba kuyesa kufotokozera zotsatira zake. Ndimati "kuyambitsa" chifukwa ziribe kanthu momwe kufotokozera kwa zotsatira kungakhale komveka, ndi njira yolakwika yothetsera vutoli.

Seva iyi ndi seva yosinthira ndipo imasintha mtsinje wa DVB-S2 kukhala IP. Mtsinje wa DVB-S uli ndi masitampu anthawi, kotero olandila, ma multiplexer, scrambler ndi ma TV nthawi zambiri amawagwiritsa ntchito kulumikiza wotchi yadongosolo. Madalaivala a board a DVB-S amamangidwa mu kernel, kotero njira yachangu yowonetsetsa kuti mtsinje wa DVB-S2 wachotsedwa ndikuchotsa zingwe zomwe zimachokera ku "mbale". Mwamwayi, seva ili kumbuyo kwa khoma, zikhale choncho.

Zoonadi, ngati zipikazo zinali ndi zomwe ziyenera kukhalapo, izi sizikadachitika, koma zowonjezereka, kachiwiri, kumapeto kwa nkhaniyo.

Chabwino, popeza tachotsa kale ma satelayiti onse, tidzachotsanso zapadziko lapansi - nthawi yomweyo timatulutsa zingwe zonse zapaintaneti. Seva imachotsedwa kudziko lakunja ndipo imagwira ntchito yokha, koma wotchi yadongosolo ikadali mwachangu.

Sabata yantchito yatha, ndipo tsiku / nthawi yokhayo sizovuta, kotero mutha kupita kunyumba, koma apa ndikulakwitsa kwatsopano.

Cholakwika chachitatu. Alangizi

Ayi! Osafunsa mafunso pamabwalo ndi mawebusayiti apadera (a la stackoverflow) ngati yankho lake limafunikira zambiri kuposa kuwerenga tsamba loyamba la Google ndikuwerenga tsamba lamunthu m'modzi.

Adzakutumizirani ku Google, kuwerenga munthu yemweyo ndikufotokozera momveka bwino malamulo a forum/site, koma sangakupatseni yankho.

Nazi zina mwazolinga:

  • palibe wina kupatula inu mukhoza kudziwa vuto komanso;
  • palibe amene angapange mayeso pamikhalidwe yofanana ndi yanu

ndi subjective:

  • simungapereke malingaliro onse othetsera vutolo, chifukwa mwabwera kale ndi njira "yoyenera" ndipo mukuwonetsa kufunikira kwa nkhaniyo;
  • woyang'anira (woyang'anira, wanthawi yakale, woyang'anira) amakhala wolondola nthawi zonse, ngati woyang'anira akulakwitsa… chabwino, mukudziwa…

Ngati, poyankha ndemanga, mudakhalabe m'mawu opimidwa, ndiye kuti muli ndi mitsempha yamphamvu.

chisankho

Palibe chifukwa chogawa ntchito kukhala zosavuta komanso zovuta.

Timasiya kudalira zomwe takumana nazo, ziwerengero, alangizi ndikuyamba "kusafotokoza" zotsatira zake, koma nthawi zonse kuyang'ana chifukwa chake.

Popeza wina amaika nthawi, kuyimba koyenera kumayenera kuchitika.

Monga momwe muzolemba zamapulogalamu zolemba zabwino kwambiri ndizochokera, momwemonso pakuwongolera dongosolo wothandizira wabwino kwambiri ndi audit, kwa ife. auditd.

Mphindi yakukaikiraNdinadutsa mana, koma sindinali wotsimikiza kuti nthawi ya Linux ikhoza kukhazikitsidwa clock_settime и settimeofday, kotero pakuyesa koyamba ndinasankha mafoni onse "oyenera":

# 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

ndi kutaya s390_runtime_instr, nthawi, timerfd_create, amene auditctl sanachizindikire, poyambirira adayambitsa kafukufuku m'njira:

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

Pambuyo powonetsetsa kuti palibe zipika zina m'malo alogi omwe ndimakonda zikwangwani Kupatula izi ziwirizi, ndidazigwiritsa ntchito kwambiri.

Kuyendetsa call audit ya system clock_settime и settimeofday ndikuyesera kusintha tsikulo:

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

Kuchedwa kwa masekondi asanu kumawonjezeredwa kuti "parasite" yathu itsimikizidwe kukonza nthawi.

Tiyeni tiwone lipoti:

# 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

Apa tikuwona zathu tsiku ndi zosadziwika kwa ife chkcache_process. Zinathera mu lipoti lomwe lili pamwambapa chifukwa aureport idasanja zomwe zatulutsidwa ndi tsiku posintha kuchokera ku binary, ndipo zomwe zidachitika panthawi yomwe tidakhazikitsa. tsiku -s "2019-08-22 12:10:00".
Ndani anamubereka?

# 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/local/bin/oscam - tiziromboti wathu wapezeka. Ngakhale kuti ali ndi "khalidwe loipa", ndizosatheka kukana njira yopezera zovomerezeka, koma ndikufunabe kudziwa oscampa, WTF?

Yankho likupezeka mwachangu ma source kodi:

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

Ndi zokongola bwanji apa adayankha mzere chenjezo...

Source: www.habr.com

Kuwonjezera ndemanga