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: