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,
posiadam pewien program, chce monitorować jego prace poprzez tworzenie logów tekstowych.
Skrypt który stworzyłem do tworzenia logów:
#!/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:
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
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:
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.
Offline
Strony: 1
Time (s) | Query |
---|---|
0.00010 | SET CHARSET latin2 |
0.00004 | SET NAMES latin2 |
0.00153 | 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.116.85.102' WHERE u.id=1 |
0.00059 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.116.85.102', 1732425457) |
0.00043 | SELECT * FROM punbb_online WHERE logged<1732425157 |
0.00059 | DELETE FROM punbb_online WHERE ident='18.222.113.135' |
0.00052 | DELETE FROM punbb_online WHERE ident='18.222.182.249' |
0.00071 | DELETE FROM punbb_online WHERE ident='185.204.1.184' |
0.00064 | DELETE FROM punbb_online WHERE ident='3.128.226.128' |
0.00063 | DELETE FROM punbb_online WHERE ident='3.145.176.228' |
0.00058 | 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.00005 | SELECT search_for, replace_with FROM punbb_censoring |
0.00121 | 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.00084 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=21681 |
Total query time: 0.00846 s |