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
Witam! mam taką sprawę - mam skrypt w bashu wykonujący pewne operacje.
Trwa to około minuty. I teraz tak - czy jest możliwość aby zamiast na ekranie pojawiających się
wykonywanych operacji mogły by się pokazywać kropki (tak jak w niektórych usługach w linuxie)
czyli po uruchomieniu pokaże się komunikat : Wykonywanie skryptu ............. ( i kropka co sekunde aż do wykonania się całego skryptu) . Był bym wdzięczny za pomoc:)
Offline
Czyli wychodzi pętla a'la:
#!/bin/bash ./polecenie_które_wykonujesz & x=1; while [ $x -le 60 ] ; do # znak & dajesz, żeby uruchomić program w tle sleep 1 echo "." x=$[x + 1] done
Wykona 60 kropek, co 1 sekundę.
UPDATE:
Ooooops, kropki idą w dół, nie sprawdziłem tego skryptu :P Ale wydaje mi się, że to będzie właśnie coś z użyciem pętli ;)
Ostatnio edytowany przez Ventrue (2008-06-25 19:51:07)
Offline
Zamiast echo "." daj echo -n "."
a po pętli samo echo, by wyświetlić nową linie.
Możesz posłać aplikację w tło (za pomocą &) i ps sprawdzać co pewien czas czy aplikacja dalej działa, jesli nie to kropa :D
Podejrzewam jednak, że autorowi chodzi o coś innego ;D
Ostatnio edytowany przez urug (2008-06-25 20:24:08)
Offline
Nooo wszystko jest ok! z tym że skrypt jest widoczny jak się wykonuje, z kropkami jest ok:) Tylko jak to myknąć żeby były same kropki bez widocznego wykonującego się skryptu ( nawet & nie pomaga - tzn nie pokazuje wszystkiego ale pokazuje).
Offline
Przekieruj skrypt, który się wykonuje do /dev/null .
./skryptwykonywany >> /dev/null
A część z kropkami pozostaw tak jak jest .
Offline
[quote=Ventrue]Czyli wychodzi pętla a'la:
#!/bin/bash ./polecenie_które_wykonujesz & x=1; while [ $x -le 60 ] ; do # znak & dajesz, żeby uruchomić program w tle sleep 1 echo "." x=$[x + 1] done
Wykona 60 kropek, co 1 sekundę.[/quote]
Intryguje mnie to [i]a'la[/i]. Powyższa pętla będzie działała przez minutę, co sekundę stawiając kropkę. Jest tym samym zupełnie niezależna od polecenia, którego działanie ma przecież w jakiś sposób przedstawiać – jeżeli polecenie zakonczy się wcześniej, kropki i tak zostaną dostawione. Jeżeli polecenie z jakiegoś powodu będzie się wykonywało dłużej, będzie na to wskazywał tylko fakt, że wciąż nie pojawił się znak zachęty.
Przeszukałem gugle, posiedziałem nad tym kilkadziesiąt minut i się poddałem. W jaki sposób w bash-u stworzyć pętlę, która wykonywałaby się tak długo, jak długo wykonuje się jakieś, określone, polecenie? Domyślam się, że należałoby skorzystać z polecen trap i wait, ale nie udało mi się zrobić tego z powodzeniem.
Offline
sleep 30 & PID=`jobs -p 1` while [ -e /proc/$PID -a "$PID" != "" ]; do echo -n '.' sleep 1 done; echo ""
moznaby darowac sobie sprawdzanie /proc/$PID i pobierac PID w pętli i sprawdzać czy nie pusty, ale tak jest bardziej ogolnie ....
Ostatnio edytowany przez bercik (2008-06-27 02:02:21)
Offline
Strony: 1
Time (s) | Query |
---|---|
0.00013 | SET CHARSET latin2 |
0.00004 | SET NAMES latin2 |
0.00169 | 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.222.119.27' WHERE u.id=1 |
0.00087 | UPDATE punbb_online SET logged=1733960324 WHERE ident='18.222.119.27' |
0.00059 | SELECT * FROM punbb_online WHERE logged<1733960024 |
0.00072 | DELETE FROM punbb_online WHERE ident='18.116.20.14' |
0.00300 | DELETE FROM punbb_online WHERE ident='18.119.110.17' |
0.00058 | DELETE FROM punbb_online WHERE ident='18.191.150.17' |
0.00023 | SELECT topic_id FROM punbb_posts WHERE id=93614 |
0.00113 | SELECT id FROM punbb_posts WHERE topic_id=11729 ORDER BY posted |
0.00049 | 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=11729 AND t.moved_to IS NULL |
0.00030 | SELECT search_for, replace_with FROM punbb_censoring |
0.00089 | 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=11729 ORDER BY p.id LIMIT 0,25 |
0.00064 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=11729 |
Total query time: 0.0113 s |