Я ищу эквивалент команды Unix 'tail', которая позволит мне наблюдать за выводом файла журнала во время его записи.
Я ищу эквивалент команды Unix 'tail', которая позволит мне наблюдать за выводом файла журнала во время его записи.
Ответы:
Я бы предложил установить что-то вроде GNU Utilities для Win32 . У этого есть большинство фаворитов, включая хвост.
tail
на файл 2 ГБ, и он задохнулся. more
работал нормально (по крайней мере, просмотр начала файла).
head
но не tail
... Идеи?
tail
:)
Если вы используете PowerShell, то это работает:
Get-Content filenamehere -Wait -Tail 30
Публикация комментария Стефана снизу, чтобы люди его не пропустили
PowerShell 3 вводит параметр -Tail, который включает только последние x строк
tail
может быть полезен) (2) он не такой динамичный, как мне бы хотелось (возможно, из-за изменений ОС / файловой системы между моей установкой и другими авторами ?). То есть я определил, что выполняемая оболочка Get-Content
иногда не обновляется, пока не запустится dir
в другой оболочке.
Get-Content -Tail 100 -Wait .\logfile.log
?
Я всегда использовал Baretail для хвостов в Windows. Это бесплатно и довольно приятно.
Изменить: для лучшего описания Baretail см этот вопрос
Любой, кто интересуется хвостом DOS CMD с помощью пакетных команд (см. Ниже).
Это не префект, а строки иногда повторяются.
Использование: 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
раньше goto followloop
. он отправляет два пинга и ждет 1 в секунду между. так что пусть процессор будет жить!: D
timeout /t 2
?
Существует довольно много вариантов, однако все они имеют недостатки с более продвинутыми функциями.
Хвост GnuWin32 глючит ( α β γ ) - такие вещи, как -f просто не работают.
Хвост UnxUtils кажется лучше (-f работает, но --pid, кажется, нет, -n, но не --lines = n не работает с -f), но кажется мертвым проектом.
Cygwin - большой уродливый месив, может, возможно, просто использует DLL и пакет coreutils - но все еще имеет проблемы, такие как --pid не работает с собственными процессами win32.
Я использовал Tail For Windows . Конечно, не так элегантно, как при использовании
хвостно тогда вы используете Windows. ;)
Я не видел Log Expert нигде среди ответов здесь.
Это настраиваемо и довольно хорошо для обхода файлов журналов. Пока что это лучшая программа для просмотра графических журналов Windows.
К сожалению, это программное обеспечение больше не доступно. Вы можете прочитать об этом на archive.org .
Если вы вообще не хотите ничего устанавливать, вы можете «создать свой» пакетный файл, который выполняет эту работу из стандартных команд Windows. Вот несколько советов о том, как это сделать.
1) Используя find / c / v "" yourinput.file , получите количество строк во входном файле. Вывод что-то вроде:
---------- T.TXT: 15
2) Используя for / f , проанализируйте этот вывод, чтобы получить число 15.
3) Используя set / a , рассчитайте количество заголовков, которые нужно пропустить
4) Используя for / f "skip = n", пропустите линии заголовка и просмотрите / обработайте линии хвоста.
Если я найду время, я создам такой пакетный файл и отправлю его сюда.
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
Попробуйте службы Windows для UNIX . Предоставляет снаряды, awk, sed и т. Д., А также хвост.
Обновление -: К сожалению, с 2019 года эта система больше не доступна в Центре загрузки Microsoft.
Я предпочитаю TailMe из-за возможности одновременного просмотра нескольких файлов журнала в одном окне: http://www.dschensky.de/Software/Staff/tailme_en.htm
DOS не имеет команды хвоста; Вы можете скачать бинарный файл Windows для хвоста GNU и другие инструменты GNU здесь .
Другой вариант - установить MSYS (более легкий, чем Cygwin).
Я только что написал этот маленький пакетный скрипт. Он не такой сложный, как «хвост» Unix, но, надеюсь, кто-то может добавить к нему, чтобы улучшить его, например, ограничить вывод последними 10 строками файла и т. Д. Если вы улучшаете этот скрипт, пожалуйста, отправьте его мне в ограблении ~ [в] ~ 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.
завершающую точку в слове (а не как отдельный аргумент), она напечатает одну новую строку.
Команда tail
и многие другие доступны в пакете инструментов Windows Resource Kit .
Если вы хотите использовать порты Win32 некоторых утилит Unix (вместо установки Cygwin), я рекомендую утилиты GNU для Win32 .
Легче, чем Cygwin, и более портативный.
Установите MKS Toolkit ... чтобы вы могли запускать все команды Unix в Windows.
Команда:
tail -f <file-name>
В Far Manager нажмите F3на файл, чтобы войти в стандартную программу просмотра, затем нажмите Endклавишу, чтобы перейти к концу файла.
Если файл обновлен, Far Manager прокрутит его автоматически.
Я использую Kiwi Log Viewer . Это бесплатно.
Графические средства просмотра журналов, хотя они могут быть очень хороши для просмотра файлов журналов, не удовлетворяют потребности в утилите командной строки, которая может быть включена в сценарии (или пакетные файлы). Часто такую простую и универсальную команду можно использовать как часть специализированного решения для конкретной среды. Графические методы не подходят для такого использования.
Я думаю, что нашел утилиту, которая удовлетворяет потребность в функции хвоста в пакетных файлах. Это называется "Mtee", и это бесплатно. Я включил его в пакетный файл, над которым я работаю, и он отлично справляется со своей задачей. Просто убедитесь, что поместили исполняемый файл в каталог в выражении PATH, и все - и все.
Вот ссылка: