[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Fw: Re: Co 30 sek.



Jak podają anonimowe źródła, przepowiedziano, że Robert Pyciarz napisze:

> > > >>crona. Wystarczy, że o każdej pełnej minucie uruchomi dwa zadania.
> > > >>1:
> > > >>do_this();
> > > >>2:
> > > >>sleep 30 && do_this();
> > > >>Proste, i zawsze będzie się uruchamiało w spodziewanych momentac, tj. o
> > > >
> > > >            ^^^^^
> > > >>pełnych minutach i w ich połówkach.
> > > >
> > > >  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^            
> > > >
> > > >do_this() {
> > > >	sleep 10
> > > >	}
> > Nie bierzesz pod uwagę, że zrobienie czegokolwiek zajmuje 
> > zwykle pewien czas. Jeśli do_this wykonuje się przez 10s,
> > to od pierwszego uruchomienia do_this do drugiego zejdzie 
> > 40+ sekund, a nie 30. Dodatkowo ten czas wcale nie musi być stały.
> Bujdy jakieś opowiadasz, rozwiązanie jest jak najbardziej prawidłowe i
> całkiem eleganckie.

Och jaki ja jestem głupi! Że też nie sprawdziłem, o czym to piszę... 

> Czas w jakim wykonuje się do_this() nie ma tu
> żadnego znaczenia, istotny jest odstęp między momentami uruchamiania i
> ten jest stały (jeśli tego nie widzisz, sprawdź).

$do_this() { date +%H:%M:%S ; sleep 10 ;  }
$tst() { do_this ; sleep 30 && do_this ;}
$time tst

15:30:56
15:31:36

real    0m50.047s
user    0m0.000s
sys     0m0.010s

albo jak wolisz:

$do_this() { date +%s ; sleep 10 ;  }
$time tst

1052919150
1052919190

real    0m50.044s
user    0m0.010s
sys     0m0.000s

Jak może zauważyłeś jest to _dokładna_ realizacja podanego algorytmu,
który ośmieliłem się tak bezrozumnie skomentować.

man bash
man time
man sleep

Pozdrawiam

-- 
Jacek Kawa       **Do not depend only on theory
            if your life is at stake. [F.Herbert]**



Reply to: