Kadiri kazi inavyokuwa rahisi, ndivyo ninavyofanya makosa mara nyingi zaidi

Kadiri kazi inavyokuwa rahisi, ndivyo ninavyofanya makosa mara nyingi zaidi

Jukumu hili dogo lilizuka Ijumaa moja alasiri na lilipaswa kuchukua muda wa dakika 2-3. Kwa ujumla, kama kawaida.

Mwenzangu aliniuliza nirekebishe hati kwenye seva yake. Nilifanya hivyo, nikampa na nikaacha bila kukusudia: "Muda ni dakika 5 haraka." Acha seva ishughulikie maingiliano yenyewe. Nusu saa, saa ikapita, na bado alijivuna na kulaani kimya kimya.

β€œMjinga! - Nilifikiria, nikibadilisha kiweko cha seva - sawa, nitapumzika kwa dakika chache zaidi.

Hebu tuone ntp, tarehe, sdwdate haijasakinishwa nyakati imezimwa na haifanyi kazi.

# 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

Hapa nitaona mara moja kwamba wakati wa vifaa ni sahihi: itakuwa rahisi zaidi kuzunguka.

Hapa ndipo mfululizo wa makosa ulipoanza.

Kosa la kwanza. Kujiamini

Bonyeza-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

Kila kitu ni sawa, wakati umelandanishwa, wakati wa mfumo unalingana na moja ya vifaa. β€œIchukue,” nilisema na kurudi kwenye biashara yangu.

β€œChukua nini? - mwenzake alikasirika. "Ni wakati huo huo!"

Kadiri unavyosuluhisha shida za kawaida, ndivyo mawazo yako yanazidi kufumba na haufikirii tena kuwa hali ya mia au elfu itakuwa tofauti, lakini sio wakati huu.

# 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

Muda wa mfumo si sahihi tena.

Hebu tujaribu tena:

# 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

Wacha tuifanye kwa njia tofauti:

# 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

Na kama hii:

# 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

Wakati umewekwa kwa sekunde ya mgawanyiko, na mara moja huanza "kukimbilia" tena.

Wakati huo huo, katika magogo, wakati wa mabadiliko hayo ya mwongozo, tunaona ripoti za mfumo tu kwamba wakati umebadilika, kwa mtiririko huo, katika mwelekeo sahihi / mbaya na mara kwa mara. Inasawazisha upya kutoka kwa 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

hapa

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

Katika hatua hii, ilikuwa tayari kutafuta sababu, lakini zaidi ya miaka 18 ya utawala, ubongo umekusanya takwimu juu ya makosa ya "wakati" na, kutokana na mazoea, tena inalaumu maingiliano.
Hebu tuzime kabisa.

# 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

na katika magogo

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

Inasawazisha upya kutoweka na vinginevyo magogo ni safi.

Kukagua hitimisho tcpdump kwenye bandari 123 kwenye miingiliano yote. Hakuna maombi, lakini wakati bado unakimbia.

Hitilafu mbili. Kukimbilia

Imesalia saa moja hadi mwisho wa wiki ya kazi, na sitaki kuondoka kwa wikendi na shida ndogo ambayo haijatatuliwa (usizingatie wakati katika nambari, nakala hiyo iliandikwa katika siku zifuatazo. )
Na hapa tena, badala ya kutafuta sababu, nilianza kujaribu kuja na maelezo ya matokeo. Ninasema "vumbua" kwa sababu haijalishi maelezo ya matokeo yanaweza kuwa ya kimantiki vipi, ni njia mbovu ya kutatua shida.

Seva hii ni seva ya kutiririsha na inabadilisha mtiririko wa DVB-S2 hadi IP. Mkondo wa DVB-S una mihuri ya muda, kwa hivyo vipokeaji, vizidishio, vinyang'anyiro na televisheni mara nyingi huzitumia kusawazisha saa ya mfumo. Viendeshi vya bodi ya DVB-S vimejengwa ndani ya kernel, hivyo njia ya haraka zaidi ya kuhakikisha kwamba mkondo wa DVB-S2 umeondolewa ni kukata nyaya zinazotoka kwenye "sahani". Kwa bahati nzuri, seva iko nyuma ya ukuta, na iwe hivyo.

Bila shaka, ikiwa magogo yangekuwa na kile kinachopaswa kuwepo, hii isingetokea, lakini zaidi juu ya hilo, tena, mwishoni mwa makala hiyo.

Naam, kwa kuwa tayari tumeondoa ishara zote za satelaiti, tutaondoa pia za duniani - wakati huo huo tunatoa nyaya zote za mtandao. Seva inakuwa imekatwa na ulimwengu wa nje na inafanya kazi kwa uhuru kabisa, lakini saa ya mfumo bado iko haraka.

Wiki ya kazi imekwisha, na suala la tarehe/saa yenyewe sio muhimu, kwa hivyo unaweza tu kwenda nyumbani, lakini hapa ninafanya kosa jipya.

Hitilafu tatu. Washauri

Kamwe! Kamwe usiulize maswali kwenye mabaraza na tovuti maalum (a la stackoverflow) ikiwa jibu lake linahitaji zaidi ya kusoma ukurasa wa kwanza wa Google na kusoma ukurasa wa mtu mmoja.

Watakurudisha kwa Google, watasoma mtu huyo huyo na wataelezea sheria za jukwaa/tovuti, lakini hawatakupa jibu.

Hapa kuna baadhi ya vipengele vya lengo:

  • hakuna mtu isipokuwa wewe unaweza kujua tatizo pia;
  • hakuna mtu anayeweza kufanya majaribio chini ya hali sawa na yako

na subjective:

  • huwezi kutoa pembejeo zote kwa ajili ya kutatua tatizo, kwa sababu tayari umekuja na mwelekeo "sahihi" na unawasilisha kiini cha suala kinachozingatia;
  • msimamizi (msimamizi, mzee, msimamizi) yuko sahihi kila wakati, ikiwa msimamizi ana makosa ... vizuri, unajua ...

Ikiwa, wakati wa kujibu maoni, ulibaki ndani ya mipaka ya msamiati uliodhibitiwa, basi una mishipa yenye nguvu.

uamuzi

Hakuna haja ya kugawanya kazi katika rahisi na ngumu.

Tunaacha kutegemea uzoefu wetu, takwimu, washauri na kuanza si "kueleza" matokeo ya mwisho, lakini kwa mara kwa mara kutafuta sababu.

Kwa kuwa mtu anaweka wakati, simu inayolingana ya mfumo lazima itokee.

Kama vile katika hati za programu hati bora ni vyanzo, kwa hivyo katika usimamizi wa mfumo msaidizi bora ni ukaguzi, kwa upande wetu. ukaguzi.

Muda wa shakaNilipitia mana, lakini sikuwa na uhakika kabisa kwamba wakati katika Linux unaweza tu kuwekwa saa_kuweka ΠΈ settimeofday, kwa hivyo kwa jaribio la kwanza nilichagua simu zote "zinazofaa":

# 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

na kutupa s390_runtime_instr, stime, timerfd_create, ambayo ukaguzi hakuitambua, hapo awali ilizindua ukaguzi katika fomu:

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

Baada ya kuhakikisha kuwa hakuna magogo mengine kwenye maeneo ya logi ninayovutiwa nayo syscalls Kando na hizi mbili, nilitumia tu zaidi.

Kuendesha ukaguzi wa simu za mfumo saa_kuweka ΠΈ settimeofday na jaribu kubadilisha tarehe:

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

Kuchelewa kwa sekunde tano huongezwa ili "vimelea" vyetu vihakikishwe kurekebisha wakati.

Wacha tuangalie ripoti:

# 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

Hapa tunaona yetu tarehe na haijulikani kwetu chkcache_michakato. Iliishia kwenye ripoti iliyo hapo juu kwa sababu aureport ilipanga matokeo kwa tarehe wakati wa kubadilisha kutoka kwa mfumo wa jozi, na tukio lilitokea wakati tulipoweka. tarehe -s "2019-08-22 12:10:00".
Nani alimzaa?

# 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 - vimelea vyetu vimepatikana. Licha ya tabia yake "mbaya", haiwezekani kukataa mfumo wa upatikanaji wa masharti, lakini bado ningependa kujua oscam, WTF?

Jibu linapatikana haraka ndani vyanzo:

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

Jinsi inavyopendeza hapa alitoa maoni mstari onyo...

Chanzo: mapenzi.com

Kuongeza maoni