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!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
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.
#!/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
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)
Offline
a nie można po prostu crona użyć? ;>
Offline
Cron'a nie mogę użyć i nie jest to moje widzimisię.
Offline
[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:
echo 'notify-send -t 200000 "at zadziałał";' | at 22:00
Pozdro
;-)
Ostatnio edytowany przez Jacekalex (2013-12-02 21:47:56)
Offline
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?
Offline
Wyliczyć trudno nie jest pod Linuksem, np.:
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
[quote=Jacekalex]
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
[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
Offline
Dzięki za C, w bashu to można zapisać znacznie krócej, np. czterokrotnie krócej :)
Offline
Strony: 1
Time (s) | Query |
---|---|
0.00008 | SET CHARSET latin2 |
0.00003 | SET NAMES latin2 |
0.00142 | 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.225.92.60' WHERE u.id=1 |
0.00065 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.225.92.60', 1732809919) |
0.00051 | SELECT * FROM punbb_online WHERE logged<1732809619 |
0.00061 | DELETE FROM punbb_online WHERE ident='18.117.154.134' |
0.00056 | DELETE FROM punbb_online WHERE ident='3.145.109.244' |
0.00066 | SELECT topic_id FROM punbb_posts WHERE id=247454 |
0.00009 | SELECT id FROM punbb_posts WHERE topic_id=24737 ORDER BY posted |
0.00081 | 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.00005 | 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.00079 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=24737 |
Total query time: 0.00808 s |