Arakaraky ny tsotsotra kokoa ny asa, no vao mainka manao fahadisoana aho

Arakaraky ny tsotsotra kokoa ny asa, no vao mainka manao fahadisoana aho

Ity asa tsy misy dikany ity dia niseho indray zoma tolakandro ary tokony ho naharitra 2-3 minitra. Amin'ny ankapobeny, toy ny mahazatra.

Nisy mpiara-miasa iray nangataka ahy hanamboatra ny script amin'ny lohamiliny. Nataoko izany, natolotro azy ary nandatsaka tsy nahy aho: "5 minitra haingana ny fotoana." Avelao ny mpizara mihitsy no hiandraikitra ny fampifanarahana. Atsasakadiny, adiny iray no lasa, ary mbola nibontsina sy nanozona mangina ihany izy.

“Adala! - Nieritreritra aho, nifindra tany amin'ny console server - okay, haka aina kely aho mandritra ny roa minitra.

Andao hojerena ntp, rdate, sdwdate tsy napetraka Timesyncd kilemaina ary tsy mihazakazaka.

# 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

Eto aho dia hanamarika avy hatrany fa marina ny fotoanan'ny fitaovana: ho mora kokoa ny hivezivezy bebe kokoa.

Teo no niantombohan’ireo lesoka.

Ny fahadisoana voalohany. Matoky tena

Click-clock...

# 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

Ny zava-drehetra dia tsara, ny fotoana synchronize, ny rafitra ny fotoana mifanaraka amin'ny fitaovana. "Raiso," hoy aho ary niverina tamin'ny raharahako.

“Raiso inona? - tezitra ilay mpiara-miasa. “Mitovy ny fotoana!”

Arakaraky ny mamaha olana mahazatra anao, dia vao mainka manjelanjelatra ny fisainanao ary tsy mieritreritra intsony ianao fa ho hafa ny toe-javatra zato na arivo, fa tsy amin'ity indray mitoraka ity.

# 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

Diso indray ny fotoanan'ny rafitra.

Andeha indray isika:

# 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

Andao hatao amin'ny fomba hafa izany:

# 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

Ary toy izao:

# 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

Ny fotoana dia napetraka ho segondra vitsy, ary avy hatrany dia manomboka "mirohotra" indray.

Mandritra izany fotoana izany, ao amin'ny logs, amin'ny fotoana fanovana manual toy izany, dia tsy mahita afa-tsy ny tatitra momba ny rafitra isika fa niova ny fotoana, tsirairay avy, amin'ny lalana marina / diso ary indraindray Famerenana indray avy amin'ny 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

eto

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

Amin'izao fotoana izao dia efa nilaina ny nikarohana ny antony, fa nandritra ny 18 taona nitantanany, ny atidoha dia nanangona antontan'isa momba ny fahadisoana "fotoana" ary, noho ny fahazarana, dia manome tsiny indray ny synchronization.
Andeha hovonointsika tanteraka.

# 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

ary amin'ny 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

Famerenana indray nanjavona ary raha tsy izany dia madio ny hazo.

Fanamarinana ny fehin-kevitra tcpdump amin'ny port 123 amin'ny interface rehetra. Tsy misy fangatahana fa mbola mandeha ny fotoana.

Error roa. zozoro

Misy adiny iray sisa amin'ny faran'ny herinandro fiasana, ary tsy te hiala amin'ny faran'ny herinandro aho miaraka amin'ny olana madinidinika tsy voavaha (aza mijery ny fotoana ao amin'ny code, ny lahatsoratra dia nosoratana tamin'ny andro manaraka ).
Ary eto indray, raha tokony hitady ny antony aho dia nanomboka nanandrana namoaka fanazavana momba ny vokatra. Hoy aho hoe "mamorona" satria na lojika toy ny inona aza ny fanazavana momba ny vokatra dia fomba fiasa tsy mety amin'ny famahana ny olana.

Ity mpizara ity dia mpizara streaming ary mamadika ny stream DVB-S2 ho IP. Ny stream DVB-S dia misy timestaps, ka matetika ny mpandray, ny multiplexer, ny scramblers ary ny televiziona no mampiasa azy ireny mba hampifanaraka ny famantaranandron'ny rafitra. Ny mpamily board DVB-S dia natsangana ao anaty kernel, ka ny fomba haingana indrindra hahazoana antoka fa nesorina ny stream DVB-S2 dia ny fanalana ny tariby avy amin'ny "takelaka". Soa ihany fa ao ambadiky ny tamboho ny mpizara, ka izany no izy.

Mazava ho azy fa raha nisy izay tokony ho hita tao amin'ny logs, dia tsy ho nitranga izany, fa bebe kokoa momba izany, indray, any amin'ny faran'ny lahatsoratra.

Eny ary, satria efa nesorinay ny famantarana zanabolana rehetra, dia esorinay koa ny terestrialy - miaraka amin'izay koa dia esorinay daholo ny tariby tambajotra. Tapaka amin'ny tontolo ivelany ny mpizara ary miasa tanteraka, fa ny famantaranandron'ny rafitra dia mbola maika.

Tapitra ny herinandron'ny asa, ary ny olana momba ny daty/ora mihitsy dia tsy mitsikera, ka afaka mody fotsiny, fa eto aho manao fahadisoana vaovao.

Error telo. mpanolo-tsaina

Sanatria! Aza mametraka fanontaniana na oviana na oviana amin'ny forums sy tranonkala manokana (a la stackoverflow) raha toa ka mitaky mihoatra noho ny fandalinana ny pejy voalohany amin'ny Google sy ny famakiana pejy lehilahy iray ny valin'izany.

Halefany any amin'ny Google ianao, hamaky ilay lehilahy iray ihany ary hanazava ny fitsipiky ny forum/site, saingy tsy hanome valiny ho anao.

Ireto misy antony vitsivitsy:

  • tsy misy afa-tsy ianao ihany koa no mahafantatra ny olana;
  • tsy misy afaka manao fitsapana mitovy amin'ny anao

ary subjective:

  • mety tsy hanome ny hevitra rehetra hamahana ny olana ianao, satria efa tonga amin'ny lalana "marina" ianao ary manolotra ny fototry ny olana mifantoka amin'izany;
  • marina foana ny foreman (moderator, old-timer, admin), raha diso ny foreman...

Raha toa ka mijanona ao anatin'ny fetran'ny voasivana voasivana ianao rehefa mamaly fanehoan-kevitra, dia manana saina mafy ianao.

fanapahan-kevitra

Tsy ilaina ny mizara asa ho tsotra sy sarotra.

Tsy miantehitra amin'ny traikefa, antontan'isa, mpanolotsaina izahay ary manomboka tsy "manazava" ny vokatra farany, fa mitady hatrany ny antony.

Satria misy olona mametraka ny fotoana, dia tsy maintsy misy ny antson'ny rafitra mifandraika amin'izany.

Tahaka ny amin'ny antontan-taratasy momba ny rindrambaiko ny antontan-taratasy tsara indrindra dia ny loharano, toy izany koa amin'ny fitantanana rafitra ny mpanampy tsara indrindra dia ny fanaraha-maso, amin'ny tranga misy antsika auditd.

Fotoana fisalasalanaNandalo ny mana aho, saingy tsy azoko antoka fa ny fotoana amin'ny Linux dia tsy azo apetraka ihany clock_settime и settimeofday, noho izany ho an'ny fitsapana voalohany dia nisafidy ny antso "mety" rehetra aho:

# 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

ary manary s390_runtime_instr, fotoana, timerfd_create, izay auditctl tsy nahafantatra izany, nanomboka nanao fanaraha-maso tamin'ny endrika:

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

Rehefa azoko antoka fa tsy misy logs hafa ao amin'ny toerana misy log izay mahaliana ahy syscalls Ankoatra ireo roa ireo dia izy ireo ihany no nampiasaiko.

Manao fanaraha-maso ny antso an-tariby clock_settime и settimeofday ary andramo hanova ny daty:

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

Miampy fahatarana dimy segondra mba hiantohana ny "parasite"-tsika hanitsy ny fotoana.

Andeha hojerentsika ny tatitra:

# 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

Eto isika dia mahita ny antsika daty ary tsy fantatray chkcache_processes. Niafara tamin'ny tatitra etsy ambony izany satria ny aureport dia nandamina ny vokatra araka ny daty rehefa niova fo binary, ary ny hetsika dia nitranga tamin'ny fotoana napetrakay daty -s "2019-08-22 12:10:00".
Iza no niteraka azy?

# 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 - efa hita ny parasitsika. Na dia eo aza ny fitondran-tenany "manimba" dia tsy azo atao ny mandà ny rafitra fidirana misy fepetra, saingy mbola tiako ho fantatra oscam, WTF?

Hita haingana ny valiny ao amin'ny kaody loharano:

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

Tena mahafatifaty eto naneho hevitra -dalana, FAMPITANDREMANA...

Source: www.habr.com

Add a comment