Mentat Napisano Lipiec 4, 2011 Zgłoszenie Share Napisano Lipiec 4, 2011 Witam. Chciałbym wzbogacić pewną grę o dodatkowe opcje (konkretnie zmianę ustawień gry). Gra zapisuje chat do pliku tekstowego. Chciałbym śledzić ten plik i wykonywać periodycznie skrypt z "nowymi" liniami z końcówki pliku. Innymi słowy chciałbym coś jak 'tail -f' tylko by dla nowych linii wykonywał skrypt który zajmie się rozpoznawaniem komend. Ma ktoś jakieś sugestie? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
alkuzad Napisano Lipiec 4, 2011 Zgłoszenie Share Napisano Lipiec 4, 2011 (edytowane) A wgl jest mozliwosc sledzenia pliku tekstowego "na bierzzaco" ? Edytowane Lipiec 4, 2011 przez WalDo ufff :) Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
borzole Napisano Lipiec 4, 2011 Zgłoszenie Share Napisano Lipiec 4, 2011 Tak, kiedyś robiłem coś takiego dla jednego z forumowiczów, ale nie pamiętam jak to się ostatecznie skończyło jednak u mnie to działało. http://dl.dropbox.com/u/409786/arch/bash/stp.lab.sh nie wiem, czy to jest działająca wersja, bo to dawno było ale "metoda" na pewno. Zabezpieczenie "tylko root" było tylko dlatego, że ten skrypt czytał z /var/log/messages, więc u siebie można to wyrzucić. Wyjście z tail -f nie jest przekazywane od razu do strumienia, więc nic nie da się z tym nic zrobić. Ale okazuje się, że można je przekazać do "strumienia nazwanego" (mkfifo), a z niego już czyta się normalnie (czytasz każdą linie w pętli while i robisz z nią co chcesz). 1 Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Mentat Napisano Lipiec 5, 2011 Autor Zgłoszenie Share Napisano Lipiec 5, 2011 Tak, kiedyś robiłem coś takiego dla jednego z forumowiczów, ale nie pamiętam jak to się ostatecznie skończyło jednak u mnie to działało. http://dl.dropbox.com/u/409786/arch/bash/stp.lab.sh nie wiem, czy to jest działająca wersja, bo to dawno było ale "metoda" na pewno. Zabezpieczenie "tylko root" było tylko dlatego, że ten skrypt czytał z /var/log/messages, więc u siebie można to wyrzucić. Działające czy nie, czyta się z przyjemnością i można sobie poprzypominać różne rzeczy oraz nauczyć się nowych. Wyjście z tail -f nie jest przekazywane od razu do strumienia, więc nic nie da się z tym nic zrobić. Ale okazuje się, że można je przekazać do "strumienia nazwanego" (mkfifo), a z niego już czyta się normalnie (czytasz każdą linie w pętli while i robisz z nią co chcesz). Okazuje się że jednak tail przesyła dane od razu (choć może chodziło Ci o strumień typu | ). Przetestowałem to na bazie Twojego skryptu. W jednej konsoli wpisałem tail -n 0 -f server.log >> nowe.txt a w drugiej while true; do if read line; then echo "$line"; fi; sleep 1; done < nowe.txt i ładnie wszystko przechodziło na bieżąco. Minus tego sposobu to rosnący plik z przesłanymi liniami loga. Dlatego sposób z nazwanym strumieniem jest oczywiście lepszy bo nie zajmuje miejsca na dysku i nie trzeba go czyścić przy starcie serwera. Dzięki za podpowiedzi. Teraz wszystko powinno pójść gładko. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się