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  2012-07-26 13:16:57

  zomb - Użytkownik

zomb
Użytkownik
Zarejestrowany: 2010-02-07

Problem z tworzeniem logów programu

Witam,
posiadam pewien program, chce monitorować jego prace poprzez tworzenie logów tekstowych.
Skrypt który stworzyłem do tworzenia logów:

Kod:

#!/bin/bash
ulimit -c unlimited
while true;
do
        echo "Restart : `date +%d-%m-%Y--%H:%M`" >> ./restart.log
        ./prog.sh >> log/`date +"%Y-%m-%d--%H:%M"`.txt;
        sleep 10
done

teraz opisze przykładowe działanie w/w skryptu:
uruchamia on program 'prog.sh', w przypadku gry program zakończy prace, uruchamia go ponownie, w pliku restart.log wypisuje date restartu.
nastepnie tworzy plik w którym loguje program, załóżmy że program wygląda tak:

Kod:

1
2
3
4
5
6 - tutaj zatrzymuje się na np 5 sekund
7
8
9
...
100
101
koniec

problem polega na tym, że co prawda wysyła do pliku log ale tylko do 6 czyli 1,2,3,4,5,6 i dalej nie, dopiero gdy program zakończy prace i sie zresetuje to dopisuje sie do pliku reszta tekstu, a ja chciałbym żeby dopisywała się ona cały czas w czasie rzeczywistym.
Proszę o pomoc/ sugestie

Offline

 

#2  2012-07-26 21:51:16

  Minio - Użyszkodnik

Minio
Użyszkodnik
Skąd: Brno, Česko
Zarejestrowany: 2007-12-22
Serwis

Re: Problem z tworzeniem logów programu

1. Nie możesz zaimplementować zapisywania wiadomości diagnostycznych w samym programie? Twoje aktualne rozwiązanie jest lekko mówiąc nieeleganckie.
2. W jaki sposób sprawdzasz, kiedy dane zapisują się do pliku?
Ja sprawdziłem na takim skrypcie, który robi mniej więcej to co robi Twój skrypt, przynajmniej na podstawie tak nieprecyzyjnych informacji jakie nam przekazałeś na jego temat:

Kod:

cat prog.sh 
#!/bin/bash

for ((i=0; i<102;i++)); do
        echo "$i"
        if [ $i -eq 6 ]; then
                sleep 5
        fi
done
echo "koniec"

Śledząc log tailem wydaje się, że po pięciosekundowej przerwie nagle cała reszta jest zapisana do pliku. Ale to złudzenie — całość jest zapisywana na bieżąco, tylko wykonanie tego skryptu zajmuje komputerowi drobny ułamek sekundy. Człowiek nie jest w stanie tego dostrzec bez bardziej precyzyjnych narzędzi niż ludzkie oko.
3. Być może u Ciebie nie chodzi o złudzenie. Ale dopóki nie pokażesz zawartości pliku [tt]prog.sh[/tt], nie będziemy w stanie Ci pomóc.


Spinnen Essen: [url=http://fluxboxpl.org/portal/]FluxboxPL[/url] [url=http://przepis-na-lo.pl/]Przepis na LibreOffice[/url]

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)

[ Generated in 0.012 seconds, 11 queries executed ]

Informacje debugowania

Time (s) Query
0.00008 SET CHARSET latin2
0.00004 SET NAMES latin2
0.00071 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.191.81.46' WHERE u.id=1
0.00126 UPDATE punbb_online SET logged=1732756024 WHERE ident='18.191.81.46'
0.00042 SELECT * FROM punbb_online WHERE logged<1732755724
0.00051 SELECT topic_id FROM punbb_posts WHERE id=207357
0.00369 SELECT id FROM punbb_posts WHERE topic_id=21681 ORDER BY posted
0.00029 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=21681 AND t.moved_to IS NULL
0.00026 SELECT search_for, replace_with FROM punbb_censoring
0.00046 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=21681 ORDER BY p.id LIMIT 0,25
0.00267 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=21681
Total query time: 0.01039 s