Okukhona umsebenzi ulula, kokukhona ndisenza iimpazamo

Okukhona umsebenzi ulula, kokukhona ndisenza iimpazamo

Lo msebenzi ungabalulekanga wavela emva kwemini yangoLwesihlanu kwaye bekufanele ukuba uthathe imizuzu emi-2-3 yexesha. Ngokubanzi, njengesiqhelo.

Umntu endisebenza naye wandicela ukuba ndilungise iskripthi kwiseva yakhe. Ndiyenzile, ndamnika ndaza ndalahla ndingaqondanga: "Ixesha liyimizuzu emi-5 ngokukhawuleza." Vumela umncedisi aphathe ungqamaniso ngokwalo. Kwadlula isiqingatha seyure, iyure, yaye wayesakhukhumala yaye ethe cwaka ethukisa.

“Sidenge! -Ndiye ndacinga, nditshintshela kwikhonsoli yeseva - kulungile, ndiza kuthatha ikhefu imizuzwana embalwa. "

Masibone ntp, umhla, sdwdate ayifakwanga maxesha ikhubazekile kwaye ayisebenzi.

# 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

Apha ndiya kuqaphela ngokukhawuleza ukuba ixesha le-hardware lichanekile: kuya kuba lula ukuhamba phambili.

Kulapho kwaqala khona uthotho lweempazamo.

Impazamo yokuqala. Ukuzithemba

Cofa-cofa...

# 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

Yonke into ilungile, ixesha lilungelelaniswa, ixesha lenkqubo lihambelana nehardware enye. “Yithathe,” ndatsho ndabuyela kwishishini lam.

“Thatha ntoni? - umlingane wayecaphukile. “Ngexesha elinye!”

Okukhona usombulula iingxaki eziqhelekileyo, kokukhona ukucinga kwakho kuya kudanyaza kwaye awusacingi ukuba imeko yekhulu okanye yewaka iya kwahluka, kodwa hayi ngeli xesha.

# 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

Ixesha lenkqubo alilunganga kwakhona.

Masizame kwakhona:

# 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

Masenze ngokwahlukileyo:

# 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

Kwaye ngolu hlobo:

# 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

Ixesha limiselwe ukwahlukana kwesibini, kwaye ngokukhawuleza uqala "ukukhawuleza" kwakhona.

Ngexesha elifanayo, kwiilogi, ngexesha lolo tshintsho lwencwadana, sibona kuphela iingxelo zenkqubo ukuba ixesha litshintshile, ngokulandelanayo, kwicala elifanelekileyo / elingalunganga kwaye ngezinye izihlandlo. Ivumelanisa kwakhona ukusuka kwi-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

apha

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

Ngeli xesha, kwakusele kuyimfuneko ukukhangela isizathu, kodwa ngaphezu kweminyaka eyi-18 yolawulo, ingqondo iqokelele izibalo kwiimpazamo "zexesha" kwaye, ngaphandle komkhwa, iphinda igxeke ukuvumelanisa.
Masiyicime ngokupheleleyo.

# 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

nakwizigodo

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

Ivumelanisa kwakhona yanyamalala kwaye kungenjalo izigodo zicocekile.

Ukujonga izigqibo wcpdump kwizibuko le-123 kuwo onke amakhonkco. Akukho zicelo, kodwa ixesha lisabaleka.

Impazamo yesibini. Ukungxama

Kukho iyure eseleyo kude kube sekupheleni kweveki yomsebenzi, kwaye andifuni ukuhamba ngeveki ngengxaki encinci engasonjululwanga (musa ukunikela ingqalelo kwixesha kwikhowudi, inqaku labhalwa kwiintsuku ezilandelayo. ).
Kwaye apha kwakhona, endaweni yokukhangela isizathu, ndaqala ukuzama ukuza nenkcazo yesiphumo. Ndithi “yila” kuba nokuba isengqiqweni kangakanani na ingcaciso yesiphumo, yindlela egwenxa yokusombulula ingxaki.

Lo mncedisi ngumncedisi wostrimisho kwaye uguqula umjelo we-DVB-S2 ube yi-IP. Umjelo we-DVB-S uqulathe izitampu zexesha, ngoko ke abamkeli, abaphinda-phindwayo, abakrazuli kunye noomabonakude bahlala bezisebenzisa ukuvumelanisa iwotshi yenkqubo. Abaqhubi bebhodi ye-DVB-S bakhiwe kwi-kernel, ngoko ke indlela ekhawulezayo yokuqinisekisa ukuba umlambo we-DVB-S2 ususiwe kukukhupha iintambo ezivela "kwiiplate". Ngethamsanqa, umncedisi usemva kodonga, makube njalo.

Ngokuqinisekileyo, ukuba iingodo beziqulathe into ekufanele ukuba khona, oku bekungeke kwenzeke, kodwa ngaphezulu koko, kwakhona, ekupheleni kwenqaku.

Ewe, ekubeni sele siyisusile yonke imiqondiso yesathelayithi, siya kususa nezo zisemhlabeni - kwangaxeshanye sikhupha zonke iintambo zenethiwekhi. Umncedisi uyanqanyulwa kwihlabathi langaphandle kwaye asebenze ngokuzimeleyo ngokupheleleyo, kodwa iwotshi yenkqubo isangxamile.

Iveki yomsebenzi iphelile, kwaye usuku / ixesha lomcimbi ngokwawo awubalulekanga, ngoko unokubuyela ekhaya, kodwa apha ndenza impazamo entsha.

Impazamo yesithathu. Abacebisi

Ungaze! Ungaze ubuze imibuzo kwiiforum kunye neengcali ngokubanzi (a la stackoverflow) iisayithi ukuba impendulo ifuna ngaphezulu kokufunda iphepha lokuqala likaGoogle kwaye ufunde iphepha lendoda enye.

Baza kukuthumela kuGoogle, bafunde indoda efanayo kwaye bachaze ngokudumileyo imithetho yeforum / indawo, kodwa abayi kukunika impendulo.

Nantsi eminye imiba yenjongo:

  • akukho mntu ngaphandle kwakho onokuthi uyazi ingxaki ngokunjalo;
  • akukho mntu unokuqhuba uvavanyo phantsi kweemeko ezifanayo nezakho

kunye nentloko:

  • awukwazi ukunika lonke igalelo ekusombululeni ingxaki, kuba sele uze nesikhokelo "esilungileyo" kwaye ubonisa undoqo womcimbi ogxininisa kuwo;
  • induna (imodareyitha, ixhego, umlawuli) isoloko ilungile, ukuba umlindi akalunganga... kulungile, uyazi...

Ukuba, xa uphendula amagqabantshintshi, ubuhlala ngaphakathi kwemida yesigama esiculiweyo, ngoko unemithambo-luvo enamandla.

Isisombululo

Akukho mfuneko yokwahlula imisebenzi ibe lula kwaye intsonkothile.

Siyayeka ukuthembela kumava ethu, izibalo, abacebisi kwaye siqale "ukungacacisi" umphumo wokugqibela, kodwa ukukhangela ngokuqhubekayo isizathu.

Ekubeni umntu ebeka ixesha, ifowuni yenkqubo ehambelanayo kufuneka yenzeke.

Kanye njengoko kumaxwebhu esoftware awona maxwebhu angcono yimithombo, ngoko kulawulo lwenkqubo oyena mncedisi ubalaseleyo kukuphicothwa kweencwadi, kwimeko yethu. uphicotho.

Umzuzwana wokuthandabuzaNdidlule kwi-mana, kodwa ndingaqinisekanga ngokupheleleyo ukuba ixesha kwiLinux linokusetwa kuphela clock_settime и ixesha lokumisela usuku, ngoko kuvavanyo lokuqala ndakhetha zonke iifowuni "ezifanelekileyo":

# 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

kunye nokulahla s390_runtime_instr, ixesha, ixesharfd_dala, leyo i-audictl khange ndiyiqaphele, ekuqaleni yaphehlelela uphicotho ngohlobo:

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

Emva kokuqinisekisa ukuba azikho ezinye iilogi kwiindawo zelogi endinomdla kuzo iisyscalls Ngaphandle kwezi zimbini, ndasebenzisa zona kuphela ngakumbi.

Ukuqhuba uphicotho lwefowuni yenkqubo clock_settime и ixesha lokumisela usuku kwaye uzame ukutshintsha umhla:

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

Ukulibaziseka kwemizuzwana emihlanu yongezwa ukwenzela ukuba "i-parasite" yethu iqinisekisiwe ukulungisa ixesha.

Makhe sijonge ingxelo:

# 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

Apha sibona wethu Umhla kwaye ayaziwa kuthi chkcache_iinkqubo. Igqibele kwingxelo engentla kuba i aureport ihlele imveliso ngomhla xa iguqulelwa kokubini, kwaye isiganeko senzeka ngexesha sibeka umhla -s "2019-08-22 12:10:00".
Ngubani owamzalayo?

# 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 -i-parasite yethu ifunyenwe. Ngaphandle kokuziphatha kwayo "olunya", akunakwenzeka ukwala inkqubo yofikelelo olunemiqathango, kodwa ndingathanda ukwazi oscam, WTF?

Impendulo ifumaneka ngokukhawuleza kwi iikhowudi zomthombo:

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

Indlela ebukeka ngayo apha uphawule umgca isilumkiso...

umthombo: www.habr.com

Yongeza izimvo