Windows-эквивалент хвостовой команды Unix

325

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

  • 0
    Это помогает? http://malektips.com/xp_dos_0001.html http://commandwindows.com/server2003tools.htm Вот прямая ссылка Microsoft. Я проверил его на своей машине (просто из любопытства и потому, что он мне может понадобиться), и он отлично работает.
  • 1
    На самом деле есть хвост для XP, просто Microsoft не устанавливает его со стандартной версией XP; они упаковали его в «Windows Server 2003 Resource Kit Tools». Вы можете получить его здесь: microsoft.com/downloads/…
Показать ещё 4 комментария
Теги:
tail

26 ответов

136
Лучший ответ

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

  • 3
    Я просто попытался использовать tail GNU для файла 2 ГБ, и он задохнулся. more работало нормально (по крайней мере, просмотр начала файла).
  • 0
    @EricJ., То же самое для меня. На 3ГБ файле я могу сделать head но не tail ... Идеи?
Показать ещё 5 комментариев
324

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

Get-Content filenamehere -Wait -Tail 30

Публикация комментария Stefan снизу, чтобы люди не пропустили его

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

  • 10
    На самом деле это не динамично
  • 2
    Это динамично для меня.
Показать ещё 16 комментариев
59

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

Изменение: для лучшего описания Baretail см. Этот вопрос

  • 0
    Это оказалось первым решением, которое работало для меня на [gulp] Windows Server 2003 R2 SP1! Супер просто с инсталлятором, работал для хвостовой уборки прямо из коробки :)
  • 0
    Загрузка и выполнение неподписанных исполняемых файлов по HTTP, вероятно, не очень хорошая идея. По крайней мере, нужно скачать через их HTTPS-сайт .
Показать ещё 1 комментарий
30

Вы можете получить хвост как часть Cygwin.

20

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

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

  • GnuWin32 tail является ошибкой (α β γ) - такие вещи, как -f просто дон- т.

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

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

17

Любой, кто интересуется хвостом CMS DOS с использованием командных команд (см. ниже) Его не префект и линии когда-то повторяются.

Использование: 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
  • 0
    Это умно, и я полностью использую существующие функции, когда загрузка инструмента не вариант! Этот код потребляет процессор, так как он будет постоянно вращаться для -f.
  • 1
    была та же проблема с загрузкой и едой процессора! добавили эту строку ping 127.0.0.1 -n 2 > nul перед goto followloop . он отправляет два пинга и ждет 1 в секунду между. так что пусть процессор живет!: D
Показать ещё 2 комментария
14

Я не видел Log Expert нигде среди ответов здесь.

Он настраивается и отлично подходит для просмотра журнальных файлов. Пока это лучший графический просмотрщик окон Windows для меня.

  • 0
    Мне нравятся возможности Log Expert, однако в Win 7 64 bit мой опыт был ошибочным.
  • 0
    Я скучаю по "четкому виду" функциональности.
14

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

tail
, но затем вы используете Windows.;)
  • 13
    Я не нахожу вашу инсинуацию о том, что элегантность стороннего инструмента зависит от ОС, на которой он работает, очень полезно. Конечно, наличие грамматической версии «tail» не более или менее изящно, поскольку альтернативы командной строки предлагают другие ответы.
  • 16
    Наличие графической версии менее элегантно, поскольку при открытии приложения, графическом выборе файла и включении мониторинга вручную возникают накладные расходы. В командной строке это всего лишь несколько нажатий клавиш. Это то, что я имел в виду. Тангенциально, нет, я бы не назвал Windows «элегантной».
Показать ещё 2 комментария
10

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

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

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

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

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

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

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

  • 12
    Windows такая радость. Я был в Unix, когда DOS впервые «придумал» подкаталоги, и мне было противно видеть, что они используют \ для разделителя пути вместо / (как и предполагал Бог). Это было предзнаменованием для всех несовместимых БС, которые появились с тех пор. У MS даже есть grep?
  • 4
    Вот партия предыдущего объяснения. Он отображает последние 10 строк текущего файла: ____ для / f "tokens = 3" %% f in ('find / c / v ""% 0') do set nbLines = %% f ____ set / a nbSkippedLines = % nbLines% -10 ____ для / f "skip =% nbSkippedLines% delims =" %% d в (% 0) do echo %% d
Показать ещё 1 комментарий
8

В Windows PowerShell вы можете использовать:

Get-Content <file> -Wait
6

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

6

Попробуйте Службы Windows для UNIX. Предоставляет оболочки, awk, sed и т.д., А также хвост.

  • 1
    Это имеет проблемы на Win7 и новее.
  • 1
    В самом деле? Ты бегаешь с отрицательным голосованием четырехлетних ответов? Способ внести свой вклад.
Показать ещё 2 комментария
5

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

4

Команда tail и многие другие доступны в пакете инструментов Windows Resource Kit из http://www.microsoft.com/en-us/download/details.aspx?id=17657

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
  • 0
    хорошая идея с использованием команды "type", но вы не можете к ней обратиться!
  • 0
    Это просто продолжает перезагружать текстовый файл.
Показать ещё 1 комментарий
4

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

4

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

4

Я предпочитаю TailMe из-за возможности просмотра нескольких файлов журналов одновременно в одном окне: http://www.dschensky.de/Software/Staff/tailme_en.htm

3

установите набор инструментов MKS.., чтобы вы могли запускать все команды unix в окнах.

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

3

type DOS работает как * nux cat, хотя он точно так же, как и cat, он выгружает весь файл, поэтому он не настоящий tail, но он будет доступен в пинче, не загружая/устанавливая истинный tail.

3

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

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

2

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

2

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

  • 0
    Это 70 € за установку. Это не бесплатно.
0

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

Здесь ссылка:

mtee

0

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

0

Вы также можете попробовать WinTail.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню