Sto cercando l'equivalente del comando 'tail' di Unix che mi permetterà di vedere l'output di un file di registro mentre viene scritto.
Sto cercando l'equivalente del comando 'tail' di Unix che mi permetterà di vedere l'output di un file di registro mentre viene scritto.
Risposte:
Suggerirei di installare qualcosa come GNU Utilities per Win32 . Ha la maggior parte dei preferiti, compresa la coda.
tail
su un file da 2 GB ed è soffocato. more
ha funzionato bene (almeno visualizzando l'inizio del file).
head
ma non tail
... Idee?
tail
:)
Se usi PowerShell allora funziona:
Get-Content filenamehere -Wait -Tail 30
Pubblicando il commento di Stefan dal basso, in modo che la gente non lo perda
PowerShell 3 introduce un parametro -Tail per includere solo le ultime x righe
tail
può essere utile) (2) non è così dinamico come vorrei (forse a causa delle modifiche del sistema operativo / file system tra la mia installazione e altri poster ?). Cioè, ho determinato che la shell a Get-Content
volte non si aggiorna fino a quando non eseguo dir
un'altra shell.
Get-Content -Tail 100 -Wait .\logfile.log
?
Ho sempre usato Baretail per la coda in Windows. È gratuito e molto carino.
Modifica: per una migliore descrizione di Baretail vedi questa domanda
Chiunque sia interessato a una coda CMD DOS usando i comandi batch (vedi sotto).
Non è perfetto e le linee a volte si ripetono.
Utilizzo: 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
prima goto followloop
. invia due ping e attende tra 1 secondo. quindi lascerebbe vivere la CPU!: D
timeout /t 2
?
Esistono diverse opzioni, tuttavia tutte presentano difetti con funzionalità più avanzate.
La coda di GnuWin32 è buggy ( α β γ ) - cose come -f semplicemente non funzionano.
La coda di UnxUtils sembra migliore (-f funziona, ma --pid sembra non farlo, -n ma non --lines = n fallisce con -f), ma sembra essere un progetto morto.
Cygwin è un grosso brutto pazzo, forse potrebbe semplicemente usare il pacchetto DLL e coreutils - ma ha ancora problemi come --pid che non funziona con i processi nativi win32.
Ho usato Tail For Windows . Certamente non elegante come l'uso
codama poi stai usando Windows. ;)
Non ho visto Log Expert da nessuna parte tra le risposte qui.
È personalizzabile ed è abbastanza buono per andare in giro per i file di registro. Finora è il miglior visualizzatore di log grafico di Windows per me.
Sfortunatamente, questo software non è più disponibile. Puoi leggerlo su archive.org .
Se non si desidera installare nulla, è possibile "creare il proprio" file batch che esegue il lavoro dai comandi standard di Windows. Ecco alcuni suggerimenti su come farlo.
1) Usando find / c / v "" yourinput.file , ottieni il numero di righe nel tuo file di input. L'output è simile a:
---------- T.TXT: 15
2) Usando per / f , analizzare questa uscita per ottenere il numero 15.
3) Usando set / a , calcola il numero di linee di testa che devono essere saltate
4) Usando per / f "skip = n" salta le linee di testa e fai eco / elabora le linee di coda.
Se trovo il tempo, costruirò un tale file batch e lo pubblicherò qui.
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
Prova i servizi di Windows per UNIX . Fornisce conchiglie, awk, sed, ecc. Nonché coda.
Aggiornamento -: Sfortunatamente, a partire dal 2019 questo sistema non è più disponibile nell'area Download Microsoft.
Preferisco TailMe per la possibilità di guardare contemporaneamente più file di registro in un'unica finestra: http://www.dschensky.de/Software/Staff/tailme_en.htm
DOS non ha un comando tail; puoi scaricare un binario di Windows per GNU tail e altri strumenti GNU qui .
Un'altra opzione sarebbe quella di installare MSYS (che è più leggero di Cygwin).
Ho appena scritto questo piccolo script batch. Non è sofisticato come la "coda" di Unix, ma si spera che qualcuno possa aggiungerlo per migliorarlo, come limitare l'output alle ultime 10 righe del file, ecc. Se si migliora questo script, si prega di inviarlo per me a derubare ~ [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.
con un punto finale sulla parola (e non come argomento separato) stamperà una nuova nuova riga.
Il tail
comando e molti altri sono disponibili nel pacchetto Strumenti di Windows Resource Kit .
Se si desidera utilizzare le porte Win32 di alcune utility Unix (anziché installare Cygwin), consiglio le utility GNU per Win32 .
Peso più leggero di Cygwin e più portatile.
Installa MKS Toolkit ... In modo da poter eseguire tutti i comandi Unix su Windows.
Il comando è:
tail -f <file-name>
In Far Manager , premere F3su un file per accedere al visualizzatore standard, quindi il Endtasto per passare alla fine del file.
Se il file viene aggiornato, Far Manager lo scorrerà automaticamente.
Sto usando Kiwi Log Viewer . È gratis.
I visualizzatori di log grafici, sebbene possano essere molto utili per visualizzare i file di log, non soddisfano la necessità di un'utilità della riga di comando che può essere incorporata negli script (o nei file batch). Spesso un comando così semplice e generico può essere utilizzato come parte di una soluzione specializzata per un particolare ambiente. I metodi grafici non si prestano facilmente a tale uso.
Penso di aver trovato un'utilità che soddisfa la necessità della funzione tail nei file batch. Si chiama "mtee" ed è gratuito. L'ho incorporato in un file batch su cui sto lavorando e fa molto bene il lavoro. Assicurati di inserire l'eseguibile in una directory nell'istruzione PATH e via.
Ecco il link: