Команда tail для Windows |
![]() |
Добавил(а) microsin |
Утилита tail идеально подходит для просмотра в реальном времени (с опцией -f) живых логов сетевого оборудования, серверов, а также логов отлаживаемых программ. В среде Linux и FreeBSD с этой утилитой проблем нет, она всегда под рукой, но как быть на платформе Windows? Microsoft Windows [Version 6.3.9600] (c) Корпорация Майкрософт (Microsoft Corporation), 2013. Все права защищены. C:\Users\Asus>tail "tail" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. Здесь опишу несколько альтернативных вариантов замены tail, которые можно установить и использовать на Windows. [MinGW] Это набор утилит Unix, перенесенных в среду Windows [1]. Установка вопросов не возникает, все происходит как обычно. После установки в переменной %Path% автоматом прописывается путь до бинарных файлов утилит, среди которых находится и tail.exe, так что теперь Вы можете пользоваться этой утилитой без проблем. tail -f \\путь_до_файла\logfile.txt Можно также скачать и установить утилиту tail отдельно [2]. Поместите файлы *.dll и tail.exe архива в папку system32 (cd %SystemRoot%\system32), и Вы также сможете запускать tail из любого каталога. C:\temp>tail --help Можно использовать как длинные опции командной строки, так и короткие. -c, --bytes=K выводятся последние K байт; альтернативно используйте -c +K для вывода байт, начиная с K-того байта в каждом файле. Если первый символ K (количество байт или строк) является символом +, выведутся строки начиная с K-той от начала каждого файла, иначе будут выводиться последние K элементов файла. K может иметь суффикс множителя *, например: С опцией --follow (-f), tail по умолчанию следует за дескриптором файла. Это подразумевает, что даже если файл, отслеживаемый в настоящий момент tail, был переименован, то tail все равно продолжит его отслеживание его конца. Это поведение по умолчанию не желательно, когда Вы на самом деле вместо дескриптора хотите отслеживать файл под своим настоящим именем (например, это может быть при ротации лога). Тогда используйте опцию --follow=name. Это приведет к тому, что tail будет отслеживать именованный файл по его полному пути, отражающему переименование, удаление и создание файла. Сообщайте об ошибках на почту bug-coreutils@gnu.org C:\temp> [Tail для Win32] Tail for Win32 - специальная версия UNIX-утилиты tail для Windows. Она может использоваться по своему обычному назначению, для мониторинга изменения содержимого файлов. Утилита распространяется в скомпилированном виде и с открытым исходным кодом, и снабжена архитектурой плагинов, которая позволяет выдавать оповещения при появлении в отслеживаемых файлов определенных ключевых слов. В настоящий момент доступен плагин MAPI, и ведутся работы по созданию версии SMTP. Утилита имеет следующие возможности: • Можно сразу отслеживать содержимое нескольких файлов в реальном времени. Подробнее информацию см. на страничке проекта [3]. [Другие варианты замены tail на платформах Windows и Unix] Powershell - наверное самый мощный инструмент на платформе Windows, однако его часто почему-то оставляют без внимания. Хотя использование Powershell для целей tail не дает никаких дополнительных функций, но это хороший способ быстрого использования командной строки в целях слежения за состоянием файла. Используйте следующий простой синтаксис, чтобы отобразить хвост файла, и отслеживать его состояние в реальном времени: Get-Content myTestLog.log –Wait Вы можете также отфильтровать лог, если укажете справа в командной строке регулярное выражение: Get-Content myTestLog.log -wait | where { $_ -match “WARNING” } Особенности использования Powershell для целей tail: • Быстрое и простое использование. По умолчанию система PowerShell не установлена на Windows XP, однако есть возможность её установить на Windows XP SP3 вместе с пакетом обновления KB968930 Windows Management Framework Core [5]. Также можно установить PowerShell вместе с KB968930 на операционных системах Windows Server 2003 (x86 и x64), Windows Server 2008 (x86 и x64), Windows Vista (x86 и x64). Утилита Stackify предоставляет все, что нужно для поддержки Ваших приложений. Встроен простой, основанный на WEB доступ к просмотру файлов, а также их окончаний (tail).
Особенности Stackify: • Можно просматривать файлы лога удаленно, подключаясь к WEB-серверу через сеть, прямо в WEB-браузере. Этот плагин был разработан Martin Krischik. Наверное, это самый лучший плагин для Vim, который можно получить для функционала tail. Особенности:
• Вы можете прямо в своем любимом редакторе Vim отслеживать файлы лога, не покидая редактор. Чтобы отслеживать хвост файла в Emacs, нажмите M-x (нажатые вместе кнопки Alt и x), и введите tail-file. Затем введите имя файла, который должен отслеживаться. В результате будет порожден процесс tail -f.
Утилита MultiTail была разработана Folkert van Heusden. Возможно, что это самая полная реализация функционала tail на платформах UNIX. Особенности:
• Все еще находится в активной разработке (на момент написания статьи последняя версия была выпущена 4 недели назад). Утилита BareTail разработана компанией Bare Metal Software. Фича программы - цветовая маркировка, которая наносится в GUI интерфейсе при просмотре файлов.
Особенности программы BareTail: • Разработана для Windows. Разработка John Walker из Fourmilab. Эта утилита давно не обновлялась (на сайте указан 1997 год), поэтому возможно она не будет хорошо работать на последних дистрибутивах Unix. Особенности:
• Можно отслеживать сразу несколько файлов, расположенных на разных серверах. Разработка Thierry Patent (см. CodeProject Page). Этот проект отлично поможет разработчикам .Net, которые хотели бы встроить функционал tail в свои программы. В коде заложено несколько мощных возможностей, но наверное это будет не лучший выбор, если Вам нужно просто быстро запустить tail-отслеживание файла.
Особенности: • Мощный инструмент, который можно настроить через правку кода. Разработано SnakeNest. Особенности: • Малые затраты памяти и малая нагрузка на CPU при работе даже с большими файлами. Мне больше всего понравилась именно эта утилита. Для просмотра текста в кодировке UTF-8 (кириллица ANSI) следует открыть настроку опций через меню Edit -> View Options... -> закладка Log File -> в выпадающем списке выберите System.Text.UTF8Encoding. После этого нажмите кнопку Apply to All (применится ко всем открытым логам, если их несколько) и Save as default (сохранение текущей настройки как настройки по умолчанию). Фанаты текстового редактора Notepad++ оценят возможность функционала tail с новым плагином Document Monitor. Теперь можно отслеживать файлы, не покидая Notepad++. Чтобы воспользоваться этим плагином, выполните следующие шаги:
1. Запустите Notepad++, выберите в меню Plugins -> Plugin Manager -> Show Plugin Manager, поставьте галочку на плагине "Document Monitor", и кликните "Install". Разработано Tobias Klauser. Базовый инструмент с минимальными опциями - если сравнивать с другими вариантами. Особенности:
• Доступен в репозиториях Git и Github. [PowerShell: отображение текста в правильной кодировке] Иногда команда powershell Get-Content дает отображение русского кракозябрами. Причина в том, что текст не воспринимается в правильной кодировке. Пример вывода кракозябрами лог-файла в кодировке UTF8: powershell Get-Content BitBang\bin\Debug\log.txt -Wait
Для правильного отображения текста используйте опцию -Encoding: powershell Get-Content BitBang\bin\Debug\log.txt -Wait -Encoding UTF8
Тот же текст, отображаемый в правильной кодировке: [Ссылки] 1. MinGW MinGW | Minimalist GNU for Windows site:mingw.org. |