2008-10-09 9 views
310

Я ищу эквивалент команды «хвост» unix, которая позволит мне наблюдать за выходом файла журнала во время его написания.Экземпляр окна команды unix tail

+1

Не exaclty простофиля, но посмотреть здесь http://stackoverflow.com/questions/247234/do-you-know -a-like-program-for-wc-unix-word-count-command-on-windows – 2009-08-20 16:59:25

ответ

123

Я предлагаю установить что-то вроде GNU Utilities for Win32. У него есть большинство фаворитов, включая хвост.

14

Я использовал Tail For Windows. Конечно, не так элегантно, как с использованием

tail
, но затем вы используете Windows. ;)

+13

Я не считаю, что ваше влечение в том, что элегантность стороннего инструмента зависит от операционной системы на очень полезно. Конечно, наличие графической версии «хвоста» не более или менее элегантно, поскольку альтернативы командной строки предлагают другие ответы. – 2008-10-09 15:36:44

+14

Наличие графической версии менее элегантно, потому что есть накладные расходы при открытии приложения, графическом выборе файла и ручном включении мониторинга. В командной строке это всего лишь несколько нажатий клавиш. Это то, что я имел в виду. Тангенциально, нет, я бы не назвал Windows «элегантным». – Jake 2008-10-09 16:11:58

+2

Существует графическая неэлесная программа для окон, которая делает это => окна не изящны. Отличная логика! Особенно, когда и powershell, и набор ресурсов, которые предоставляются Microsoft, поддерживают элегантную версию функциональности ... – Cray 2011-12-06 23:35:33

3

Если вы хотите использовать Win32-порты некоторых утилит Unix (вместо установки Cygwin), я рекомендую GNU utilities for Win32.

Более легкий вес, чем Cygwin и более портативный.

56

Я всегда использовал Baretail для хвоста в Windows. Это бесплатно и довольно приятно.

Edit: для лучшего описания BareTail см this question

10

Если вы не хотите ничего устанавливать, вы можете «создать собственный» пакетный файл, который выполняет задание из стандартных команд Windows. Вот несколько указаний относительно того, как это сделать.

1) Используя find/c/v "" yourinput.file, получите количество строк в вашем входном файле. Выход что-то вроде:

---------- T.TXT: 15 

2) Использование для/ф, разобрать этот выход, чтобы получить число 15.

3) Используя набор/A, вычислить количество головных линий что необходимо пропустить

4) Использование для/f "skip = n" пропустить линии головы и эхо/обработать хвостовые линии.

Если я найду время, я создам такой пакетный файл и отправлю его сюда.

+11

Windows - такая радость. Я был в Unix, когда DOS сначала «подошел» с подкаталогами, и ему было неловко видеть, как они используют \ для разделителя путей вместо/(как и предназначил Бог). Это было предзнаменованием для всей несовместимой BS, которая появилась из MS с тех пор. У MS даже есть grep? – xcramps 2009-08-20 16:58:05

+4

Вот часть предыдущего объяснения. Он отображает последние 10 строк текущего файла: ____ для/f "tokens = 3" %% f in ('find/c/v ""% 0') установить nbLines = %% f ____ set/a nbSkippedLines = % nbLines% -10 ____ for/f "skip =% nbSkippedLines% delims =" %% d in (% 0) do echo %% d – Nicolas 2011-01-03 16:23:02

21

Существует множество вариантов, однако все они имеют недостатки с более продвинутыми функциями.

  • Windows Server 2003 Tools обеспечивает простой хвост, который может быть downloaded with the Resource Kit Tools. Он слишком ограничен во многих отношениях (блокирует следующий файл, не хватает многих опций, таких как --pid), однако будет делать основную задачу отслеживания файла.

  • GnuWin32 tail глючит (αβγ) - вещи, как -f просто не работают.

  • UnxUtils tail10 кажется лучше (-f работает, но --pid кажется не, -n, но не --lines = n не работает с -f), но кажется мертвым проектом.

  • Cygwin - большой уродливый месиво, возможно, просто используйте DLL и coreutils package - но все еще есть проблемы, например, - не работает с родными процессами win32.

288

Если вы используете PowerShell, то это работает:

Get-Content filenamehere -Wait -Tail 30 

Публикация комментария Стефана снизу, так что люди не пропустите это

PowerShell 3 вводит -Tail параметр, чтобы включить только последние x строк

+9

На самом деле это не динамично – 2010-03-19 08:35:03

+2

Это динамично для меня. – jimueller 2010-07-27 17:34:02

+16

Это полезно знать; Благодарю. Но у меня было несколько проблем с ним (в Windows 7). (1) он отображает весь файл (не подходит для массивного файла журнала, поэтому «хвост» может быть полезен) (2) он не так динамичен, как мне бы хотелось (возможно, из-за изменений ОС/файловой системы между моей установкой и другие плакаты?). То есть я решил, что оболочка, выполняющая `Get-Content`, иногда не обновляется, пока я не запустил` dir` в другой оболочке. – mpontillo 2011-03-02 23:33:27

5

Загрузить команду хвоста, часть Windows Server 2003 Resource Kit Tools от Microsoft.

+1

Разве вам не показалось странным, как выглядит ссылка, это будет указывать на Microsoft, но это не так? :) – Tomalak 2009-05-08 21:12:24

4

DOS имеет no tail command; вы можете загрузить двоичный файл Windows для хвоста GNU и других инструментов GNU here.

3

ДОС type работает как * Nux-х cat, хотя так же, как кошка, он делает дамп весь файл, так что его на самом деле не истинный хвост, но его будет доступен в крайнем случае без загрузки/установки истинного хвоста замены.

4

Другим вариантом было бы установить MSYS (который более легкий, чем Cygwin).

8

С помощью Windows PowerShell можно использовать:

Get-Content <file> -Wait 
17

всех, кто заинтересован в командах с использованием пакетных через 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 
3

установить набор инструментов MKS .. так что вы можете запускать все команды Unix в окнах.

tail -f - это команда.

5

Я использовал Mtail недавно, и это, кажется, работает хорошо. Это тип графического интерфейса, например, упомянутый выше. enter image description here

2

Я использую Kiwi Log Viewer, это бесплатно.

4

Я просто написал этот небольшой пакетный скрипт. Это не так сложно, как «хвост» unix, но, надеюсь, кто-то может добавить его к нему, чтобы улучшить его, например, ограничение вывода на последние 10 строк файла и т. Д. Если вы улучшите этот скрипт, отправьте его меня при грабеже ~ [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 
13

Я не видел журнала Эксперт в любом месте среди ответов здесь:

http://www.log-expert.de/

Это настраиваемый и очень хорошо для обходе файлов журнала, до сих пор это лучшие окна графического просмотра журнала для меня ,

0

Графический просмотрщик журналов, хотя они могут быть очень хороши для просмотра файлов журналов, не соответствуют потребности в утилите командной строки, которая может быть включена в скрипты (или пакетные файлы). Часто такая простая и универсальная команда может использоваться как часть специализированного решения для конкретной среды. Графические методы не поддаются такому использованию.

0

Я думаю, что нашел утилиту, которая отвечает потребностям функции хвоста в пакетных файлах. Это называется «mtee», и это бесплатно. Я включил его в пакетный файл, над которым я работаю, и он делает работу очень красиво. Просто убедитесь, что вы поместите исполняемый файл в каталог в инструкции PATH и уходите.

Вот ссылка:

mtee

2

В Far Manager пресс F3 на файл, чтобы ввести стандартный просмотрщик, то End ключ для перехода к концу файла. Если файл обновлен - Far будет автоматически прокручивать его.