Ich suche nach dem Äquivalent des Unix-Befehls 'tail', mit dem ich die Ausgabe einer Protokolldatei beobachten kann, während sie geschrieben wird.
Ich suche nach dem Äquivalent des Unix-Befehls 'tail', mit dem ich die Ausgabe einer Protokolldatei beobachten kann, während sie geschrieben wird.
Antworten:
Ich würde vorschlagen, etwas wie GNU Utilities für Win32 zu installieren . Es hat die meisten Favoriten, einschließlich Schwanz.
tail
für eine 2-GB-Datei zu verwenden, und es ist erstickt. more
hat gut funktioniert (zumindest den Anfang der Datei anzeigen).
head
aber nicht tail
... Ideen?
tail
Wenn Sie PowerShell verwenden, funktioniert dies:
Get-Content filenamehere -Wait -Tail 30
Poste Stefans Kommentar von unten, damit die Leute ihn nicht verpassen
PowerShell 3 führt einen -Tail-Parameter ein, der nur die letzten x Zeilen enthält
tail
dies nützlich sein kann). (2) Es ist nicht so dynamisch, wie ich es gerne hätte (möglicherweise aufgrund von Änderungen des Betriebssystems / Dateisystems zwischen meinem Setup und anderen Postern ?). Das heißt, ich habe festgestellt, dass die Shell Get-Content
manchmal nicht aktualisiert wird, bis ich dir
in einer anderen Shell ausgeführt werde.
Get-Content -Tail 100 -Wait .\logfile.log
?
Ich habe Baretail immer zum Tailing in Windows verwendet. Es ist kostenlos und ziemlich nett.
Bearbeiten: Für eine bessere Beschreibung von Baretail siehe diese Frage
Sie können Schwanz als Teil von Cygwin bekommen .
Jeder, der an einem DOS- CMD-Tail mit Batch-Befehlen interessiert ist (siehe unten).
Es ist kein Präfekt und Zeilen wiederholen sich manchmal.
Verwendung: 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
vor goto followloop
. Es sendet zwei Pings und wartet 1 in Sekunden dazwischen. so würde es CPU leben lassen !: D
timeout /t 2
?
Es gibt eine ganze Reihe von Optionen, jedoch weisen alle Fehler mit erweiterten Funktionen auf.
GnuWin32 Schwanz ist fehlerhaft ( α β γ ) - Dinge wie -f funktionieren einfach nicht.
UnxUtils Schwanz scheint besser zu sein (-f funktioniert, aber --pid scheint nicht, -n aber nicht --lines = n schlägt mit -f fehl), scheint aber ein totes Projekt zu sein.
Cygwin ist ein großer hässlicher Brei, könnte vielleicht nur das DLL- und Coreutils-Paket verwenden - hat aber immer noch Probleme wie --pid, das nicht mit nativen Win32-Prozessen funktioniert.
Ich habe Tail für Windows verwendet . Sicher nicht so elegant wie mit
SchwanzAber dann verwenden Sie Windows. ;)
Ich habe Log Expert unter den Antworten hier nirgends gesehen.
Es ist anpassbar und eignet sich gut zum Umgehen von Protokolldateien. Bisher ist es der beste grafische Windows-Protokoll-Viewer für mich.
Leider ist diese Software nicht mehr verfügbar. Sie können darüber auf archive.org lesen .
Wenn Sie überhaupt nichts installieren möchten, können Sie eine "eigene" Batchdatei erstellen, die die Aufgabe mit Standard-Windows-Befehlen erledigt. Hier sind einige Hinweise, wie es geht.
1) Mit find / c / v "" yourinput.file ermitteln Sie die Anzahl der Zeilen in Ihrer Eingabedatei. Die Ausgabe ist so etwas wie:
---------- T.TXT: 15
2) Analysieren Sie diese Ausgabe mit for / f , um die Nummer 15 zu erhalten.
3) Berechnen Sie mit set / a die Anzahl der Überschriften, die übersprungen werden müssen
4) Mit for / f "skip = n" überspringen Sie die Überschriften und geben Sie die Endzeilen wieder.
Wenn ich die Zeit finde, werde ich eine solche Batch-Datei erstellen und hier zurück posten.
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
Probieren Sie Windows Services für UNIX aus . Bietet Muscheln, awk, sed usw. sowie Schwanz.
Update -: Ab 2019 ist dieses System leider nicht mehr im Microsoft Download Center verfügbar.
Ich bevorzuge TailMe, da mehrere Protokolldateien gleichzeitig in einem Fenster angezeigt werden können: http://www.dschensky.de/Software/Staff/tailme_en.htm
DOS hat keinen Endbefehl; Sie können einen Windows - Binary für GNU Schwanz und andere GNU - Tools Download hier .
Eine andere Möglichkeit wäre die Installation von MSYS (das leichter als Cygwin ist).
Ich habe gerade dieses kleine Batch-Skript geschrieben. Es ist nicht so ausgefeilt wie das Unix "Tail", aber hoffentlich kann jemand etwas hinzufügen, um es zu verbessern, z. B. die Ausgabe auf die letzten 10 Zeilen der Datei zu beschränken usw. Wenn Sie dieses Skript verbessern, senden Sie es bitte zu mir beim berauben ~ [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.
einen nachgestellten Punkt auf dem Wort aufrufen (und nicht als separates Argument), wird eine einzelne neue Zeile gedruckt.
Der tail
Befehl und viele andere sind im Windows Resource Kit Tools- Paket verfügbar .
Wenn Sie Win32-Ports einiger Unix-Dienstprogramme verwenden möchten (anstatt Cygwin zu installieren), empfehle ich GNU-Dienstprogramme für Win32 .
Leichter als Cygwin und tragbarer.
Installieren Sie das MKS Toolkit ... damit Sie alle Unix-Befehle unter Windows ausführen können.
Der Befehl lautet:
tail -f <file-name>
Drücken Sie in Far ManagerF3 auf eine Datei, um den Standard-Viewer aufzurufen , und drücken Sie dann die EndTaste, um zum Dateiende zu navigieren.
Wenn die Datei aktualisiert wird, wird sie von Far Manager automatisch gescrollt.
Ich benutze Kiwi Log Viewer . Es ist kostenlos.
Grafische Protokollbetrachter eignen sich zwar sehr gut zum Anzeigen von Protokolldateien, erfordern jedoch kein Befehlszeilenprogramm, das in Skripts (oder Batchdateien) integriert werden kann. Oft kann ein solcher einfacher und universeller Befehl als Teil einer speziellen Lösung für eine bestimmte Umgebung verwendet werden. Grafische Methoden eignen sich nicht ohne weiteres für eine solche Verwendung.
Ich glaube, ich habe ein Dienstprogramm gefunden, das die Anforderungen für die Tail-Funktion in Batch-Dateien erfüllt. Es heißt "mtee" und ist kostenlos. Ich habe es in eine Batch-Datei aufgenommen, an der ich arbeite, und es macht den Job sehr gut. Stellen Sie einfach sicher, dass die ausführbare Datei in einem Verzeichnis in der PATH-Anweisung abgelegt ist, und los geht's.
Hier ist der Link: