Szukam ekwiwalentu uniksowego polecenia „tail”, które pozwoli mi oglądać dane wyjściowe pliku dziennika podczas jego zapisywania.
Szukam ekwiwalentu uniksowego polecenia „tail”, które pozwoli mi oglądać dane wyjściowe pliku dziennika podczas jego zapisywania.
Odpowiedzi:
Sugeruję zainstalowanie czegoś takiego jak GNU Utilities dla Win32 . Ma większość ulubionych, w tym ogon.
tail
na pliku 2 GB i dusił się. more
działało dobrze (przynajmniej przeglądając początek pliku).
head
ale nie tail
... Pomysły?
tail
:)
Jeśli używasz programu PowerShell, działa to:
Get-Content filenamehere -Wait -Tail 30
Publikowanie komentarza Stefana od dołu, aby ludzie nie przegapili tego
PowerShell 3 wprowadza parametr -Tail w celu uwzględnienia tylko ostatnich x linii
tail
może być przydatny) (2) nie jest tak dynamiczny, jak bym chciał (może z powodu zmian systemu operacyjnego / systemu plików między moją instalacją a innymi plakatami ?). To znaczy, ustaliłem, że powłoka Get-Content
czasami się nie aktualizuje, dopóki nie uruchomię dir
innej powłoki.
Get-Content -Tail 100 -Wait .\logfile.log
?
Zawsze używałem Baretail do tailowania w Windowsie. Jest darmowy i całkiem ładny.
Edytuj: dla lepszego opisu Baretail zobacz to pytanie
Każdy zainteresowany ogonem DOS CMD za pomocą poleceń wsadowych (patrz poniżej).
To nie jest prefekt, a linie czasami się powtarzają.
Zastosowanie: tail.bat -d tail.bat -f -f
@echo off
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
rem tail.bat -d <lines> <file>
rem tail.bat -f <file>
rem ****** MAIN ******
IF "%1"=="-d" GOTO displayfile
IF "%1"=="-f" GOTO followfile
GOTO end
rem ************
rem Show Last n lines of file
rem ************
:displayfile
SET skiplines=%2
SET sourcefile=%3
rem *** Get the current line count of file ***
FOR /F "usebackq tokens=3,3 delims= " %%l IN (`find /c /v "" %sourcefile%`) DO (call SET find_lc=%%l)
rem *** Calculate the lines to skip
SET /A skiplines=%find_lc%-!skiplines!
rem *** Display to screen line needed
more +%skiplines% %sourcefile%
GOTO end
rem ************
rem Show Last n lines of file & follow output
rem ************
:followfile
SET skiplines=0
SET findend_lc=0
SET sourcefile=%2
:followloop
rem *** Get the current line count of file ***
FOR /F "usebackq tokens=3,3 delims= " %%l IN (`find /c /v "" %sourcefile%`) DO (call SET find_lc=%%l)
FOR /F "usebackq tokens=3,3 delims= " %%l IN (`find /c /v "" %sourcefile%`) DO (call SET findend_lc=%%l)
rem *** Calculate the lines to skip
SET /A skiplines=%findend_lc%-%find_lc%
SET /A skiplines=%find_lc%-%skiplines%
rem *** Display to screen line when file updated
more +%skiplines% %sourcefile%
goto followloop
:end
ping 127.0.0.1 -n 2 > nul
wcześniej goto followloop
. wysyła dwa pingi i czeka 1 sekundę między nimi. więc pozwoliłoby to żyć cpu!: D
timeout /t 2
?
Istnieje wiele opcji, jednak wszystkie mają wady z bardziej zaawansowanymi funkcjami.
Ogon GnuWin32 jest wadliwy ( α β γ ) - rzeczy takie jak -f po prostu nie działają.
Ogon UnxUtils wydaje się lepszy (-f działa, ale --pid wydaje się nie działać, -n ale nie --lines = n kończy się niepowodzeniem z -f), ale wydaje się być martwym projektem.
Cygwin to duża brzydka papka, być może mogłaby po prostu użyć biblioteki DLL i pakietu coreutils - ale nadal ma problemy, takie jak - nie działa z natywnymi procesami win32.
Użyłem Tail For Windows . Z pewnością nie tak elegancki jak używanie
ogonale używasz Windowsa. ;)
Nigdzie nie widziałem Log Expert wśród odpowiedzi tutaj.
Można go dostosować i jest całkiem dobry do przeglądania plików dziennika. Jak dotąd jest to dla mnie najlepsza przeglądarka graficznych dzienników systemu Windows.
Niestety, to oprogramowanie nie jest już dostępne. Możesz przeczytać o tym na archive.org .
Jeśli nie chcesz nic instalować, możesz „zbudować własny” plik wsadowy, który wykonuje zadanie na podstawie standardowych poleceń systemu Windows. Oto kilka wskazówek, jak to zrobić.
1) Korzystając z find / c / v "" pliku.input " , uzyskaj liczbę linii w pliku wejściowym. Wynik jest podobny do:
---------- T.TXT: 15
2) Używając for / f , przeanalizuj to wyjście, aby uzyskać liczbę 15.
3) Za pomocą set / a obliczyć liczbę linii, które należy pominąć
4) Używając for / f "skip = n" pomiń nagłówki i wykonaj echo / przetworz linie ogona.
Jeśli znajdę czas, zbuduję taki plik wsadowy i opublikuję go tutaj.
tail.bat
REM tail.bat
REM
REM Usage: tail.bat <file> <number-of-lines>
REM
REM Examples: tail.bat myfile.txt 10
REM tail.bat "C:\My File\With\Spaces.txt" 10
@ECHO OFF
for /f "tokens=2-3 delims=:" %%f in ('find /c /v "" %1') do (
for %%F in (%%f %%g) do set nbLines=%%F )
set /a nbSkippedLines=%nbLines%-%2
for /f "usebackq skip=%nbSkippedLines% delims=" %%d in (%1) do echo %%d
Wypróbuj Usługi Windows dla UNIX . Zapewnia muszle, awk, sed itp., A także ogon.
Aktualizacja -: Niestety, od 2019 roku ten system nie jest już dostępny w Centrum pobierania Microsoft.
Wolę TailMe ze względu na możliwość oglądania kilku plików dziennika jednocześnie w jednym oknie: http://www.dschensky.de/Software/Staff/tailme_en.htm
DOS nie ma polecenia ogona; możesz pobrać plik binarny Windows dla GNU tail i innych narzędzi GNU tutaj .
Inną opcją byłoby zainstalowanie MSYS (który jest bardziej lekki niż Cygwin).
Właśnie napisałem ten mały skrypt partii. Nie jest tak wyrafinowany jak „ogon” Uniksa, ale mam nadzieję, że ktoś może go dodać, aby go ulepszyć, na przykład ograniczając wyjście do 10 ostatnich linii pliku itp. Jeśli ulepszysz ten skrypt, prześlij go do mnie na rabowaniu ~ [at] ~ gmail.com.
@echo off
:: This is a batch script I wrote to mimic the 'tail' UNIX command.
:: It is far from perfect, but I am posting it in the hopes that it will
:: be improved by other people. This was designed to work on Windows 7.
:: I have not tested it on any other versions of Windows
if "%1" == "" goto noarg
if "%1" == "/?" goto help
if "%1" == "-?" goto help
if NOT EXIST %1 goto notfound
set taildelay=%2
if "%taildelay%"=="" set taildelay=1
:loop
cls
type %1
:: I use the CHOICE command to create a delay in batch.
CHOICE /C YN /D Y /N /T %taildelay%
goto loop
:: Error handlers
:noarg
echo No arguments given. Try /? for help.
goto die
:notfound
echo The file '%1' could not be found.
goto die
:: Help text
:help
echo TAIL filename [seconds]
:: I use the call more pipe as a way to insert blank lines since echo. doesnt
:: seem to work on Windows 7
call | more
echo Description:
echo This is a Windows version of the UNIX 'tail' command.
echo Written completely from scratch by Andrey G.
call | more
echo Parameters:
echo filename The name of the file to display
call | more
echo [seconds] The number of seconds to delay before reloading the
echo file and displaying it again. Default is set to 1
call | more
echo ú /? Displays this help message
call | more
echo NOTE:
echo To exit while TAIL is running, press CTRL+C.
call | more
echo Example:
echo TAIL foo 5
call | more
echo Will display the contents of the file 'foo',
echo refreshing every 5 seconds.
call | more
:: This is the end
:die
echo.
z kropką na słowie (a nie jako osobny argument), wypisze pojedynczy nowy wiersz.
tail
Poleceń i wiele innych dostępne są w Narzędzia Windows Resource Kit pakietu.
Jeśli chcesz korzystać z portów Win32 niektórych narzędzi Uniksa (zamiast instalować Cygwin), polecam narzędzia GNU dla Win32 .
Lżejsza niż Cygwin i bardziej przenośna.
Zainstaluj MKS Toolkit ... Abyś mógł uruchamiać wszystkie polecenia Uniksa w systemie Windows.
Polecenie to:
tail -f <file-name>
W programie Far Manager naciśnij F3plik, aby przejść do standardowej przeglądarki, a następnie Endklawisz, aby przejść do końca pliku.
Jeśli plik zostanie zaktualizowany, Far Manager przewinie go automatycznie.
Używam przeglądarki dzienników Kiwi . Jest wolne.
Graficzne przeglądarki dzienników, chociaż mogą być bardzo dobre do przeglądania plików dziennika, nie spełniają potrzeby narzędzia wiersza poleceń, które można włączyć do skryptów (lub plików wsadowych). Często takie proste i ogólne polecenie może być używane jako część specjalistycznego rozwiązania dla określonego środowiska. Metody graficzne nie nadają się do takiego użycia.
Myślę, że znalazłem narzędzie, które spełnia potrzebę funkcji tail w plikach wsadowych. Nazywa się „mtee” i jest bezpłatny. Włączyłem go do pliku wsadowego, nad którym pracuję, i robi to bardzo dobrze. Wystarczy umieścić plik wykonywalny w katalogu w instrukcji PATH i gotowe.
Oto link: