Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2013-12-02 15:37:53

  kondzio14 - Użytkownik

kondzio14
Użytkownik
Zarejestrowany: 2008-02-14

[BASH] oczekiwanie na konkretną godzinę

Jak najprościej, najwydajniej lub w ogóle najlepiej oczekiwać z wykonywaniem skryptu do konkretnej godziny?
Skrypt test.sh wołany jest z zewnętrznego hosta o godzinie 23:59 i musi się zacząć wykonywać równo o północy.

Np.

Kod:

#!/usr/bin/ksh
while true
do
  D=$(date "+%M")
  if [[ "$D" -eq 0 ]]
  then
        break
  else
    echo Waiting.....
  fi
done
echo dalszy ciag programu...

PS. nie sprawdzałem czy format minut dla północy to 0 czy 00, ale nie jest to w tej chwili najważniejsze.

Jakieś uwagi, sugestie?

Offline

 

#2  2013-12-02 16:28:23

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: [BASH] oczekiwanie na konkretną godzinę

Kod:

man at

Tyle o uruchamianiu zadania o konkretnej godzinie.

Skrypt ma czekać?
Może pętlą, ale daj mu w pętli np [b]sleep 1[/b], żeby próbował co sekundę, zamiast smażenia procka.

Ostatnio edytowany przez Jacekalex (2013-12-02 16:29:07)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#3  2013-12-02 20:35:23

  winnetou - złodziej wirków ]:->

winnetou
złodziej wirków ]:->
Skąd: Jasło/Rzeszów kiedyś Gdańs
Zarejestrowany: 2008-03-31
Serwis

Re: [BASH] oczekiwanie na konkretną godzinę

a nie można po prostu crona użyć? ;>


LRU: #472938
[b]napisz do mnie:[/b] ola@mojmail.eu
[url=http://valhalla.org.pl]Hołmpejdż[/url] | [url=http://valhalla.org.pl/foto]Galerie[/url] | [url=http://valhalla.org.pl/tech]"Twórczość"[/url] || [url=http://img.munn.in]Free Image Hosting[/url]

Offline

 

#4  2013-12-02 20:59:33

  kondzio14 - Użytkownik

kondzio14
Użytkownik
Zarejestrowany: 2008-02-14

Re: [BASH] oczekiwanie na konkretną godzinę

Cron'a nie mogę użyć i nie jest to moje widzimisię.

Offline

 

#5  2013-12-02 21:35:43

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: [BASH] oczekiwanie na konkretną godzinę

[quote=kondzio14]Cron'a nie mogę użyć i nie jest to moje widzimisię.[/quote]
To  napisz z łaski swojej, co to za szkoła, i kto personalnie takie durne zadania domowe wymyśla, żeby kilka pokoleń Dugowiczów wiedziało, kogo i czego omijać szerokim łukiem. :D

EDIT:
Pokaż też wynik:

Kod:

echo 'notify-send -t 200000 "at zadziałał";' | at 22:00

Pozdro
;-)

Ostatnio edytowany przez Jacekalex (2013-12-02 21:47:56)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#6  2013-12-02 22:20:22

  P@blo - Nadworny matematyk

P@blo
Nadworny matematyk
Skąd: Wrocław v Jasło
Zarejestrowany: 2010-11-11

Re: [BASH] oczekiwanie na konkretną godzinę

Zrób algorytm obliczania ile zostało od czasy 'teraz' do konkretnej (w twoim przypadku północ) i każ tyle spać (sleep). Tak to widzę, żeby wynaleźć drugi raz koło, ale... Po co?


[tt]ThinkPadX220i
| Procesor: Intel(R) Core(TM) i3-2310M CPU @ 2.10GHz |
|  Debian: sid   |   Arch: amd64   |   Sound: alsa   |
| No DE | WM: DWM  |  DM: .bash_profile  |  BIOS+MBR |[/tt]

Offline

 

#7  2013-12-03 15:38:55

  kondzio14 - Użytkownik

kondzio14
Użytkownik
Zarejestrowany: 2008-02-14

Re: [BASH] oczekiwanie na konkretną godzinę

Wyliczyć trudno nie jest pod Linuksem, np.:

Kod:

echo $(($(date -d 'tomorrow 00:00:00' +%s) - $(date +%s)))

Da liczbę sekund do uśpienia.

No ale już nie tak prosto jest to zapisać posługując się date na AIX - jakiś odważny? :)

Ostatnio edytowany przez kondzio14 (2013-12-03 21:05:14)

Offline

 

#8  2013-12-04 09:22:05

  kondzio14 - Użytkownik

kondzio14
Użytkownik
Zarejestrowany: 2008-02-14

Re: [BASH] oczekiwanie na konkretną godzinę

[quote=Jacekalex]

Kod:

man at

Tyle o uruchamianiu zadania o konkretnej godzinie.[/quote]
at jest o tyle słaby, że nie jest precyzyjny co do sekundy, a minuty...
[quote=Jacekalex]Skrypt ma czekać?
Może pętlą, ale daj mu w pętli np [b]sleep 1[/b], żeby próbował co sekundę, zamiast smażenia procka.[/quote]
Racja.

Offline

 

#9  2013-12-04 18:49:25

  dominbik - Członek DUG

dominbik
Członek DUG
Zarejestrowany: 2011-07-25

Re: [BASH] oczekiwanie na konkretną godzinę

[quote=P@blo]Zrób algorytm obliczania ile zostało od czasy 'teraz' do konkretnej (w twoim przypadku północ) i każ tyle spać (sleep).[/quote]
Dokładnie. Tak to może wyglądać w C: (oblicza sobie ile sekund ma spać i tyle po prostu śpi):
http://pastebin.com/raw.php?i=4JKWQzgH
jakbyś chciał i masz gcc. Daleko temu do prawdziwego daemona i profesjonalizmu (uczę się C tylko w wolnych chwilach), ale powinno działać ;)
przykład; ./program 00:00:00 leafpad test


[img]http://img34.imageshack.us/img34/5092/zw9m.png[/img] [img]http://img29.imageshack.us/img29/219/pibw.png[/img]

Offline

 

#10  2013-12-05 09:57:15

  kondzio14 - Użytkownik

kondzio14
Użytkownik
Zarejestrowany: 2008-02-14

Re: [BASH] oczekiwanie na konkretną godzinę

Dzięki za C, w bashu to można zapisać znacznie krócej, np. czterokrotnie krócej :)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)

[ Generated in 0.009 seconds, 12 queries executed ]

Informacje debugowania

Time (s) Query
0.00009 SET CHARSET latin2
0.00003 SET NAMES latin2
0.00094 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='18.188.63.71' WHERE u.id=1
0.00060 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.188.63.71', 1732488192)
0.00044 SELECT * FROM punbb_online WHERE logged<1732487892
0.00069 DELETE FROM punbb_online WHERE ident='54.36.149.46'
0.00049 SELECT topic_id FROM punbb_posts WHERE id=247433
0.00006 SELECT id FROM punbb_posts WHERE topic_id=24737 ORDER BY posted
0.00075 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=24737 AND t.moved_to IS NULL
0.00004 SELECT search_for, replace_with FROM punbb_censoring
0.00182 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=24737 ORDER BY p.id LIMIT 0,25
0.00067 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=24737
Total query time: 0.00662 s