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: Poznań, Polska
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 prog.sh, nie będziemy w stanie Ci pomóc.

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)