Un équivalent Windows de la commande Unix tail [fermé]
Je cherche l'équivalent de la commande Unix 'tail' qui me permettra de regarder la sortie d'un fichier journal pendant qu'il est écrit.
26 réponses
Je suggère d'installer quelque chose comme GNU Utilities pour Win32 . Il a la plupart des favoris, y compris la queue.
Si vous utilisez PowerShell, cela fonctionne:
Get-Content filenamehere -Wait -Tail 30
Poster le commentaire de Stefan d'en bas, afin que les gens ne le manquent pas
PowerShell 3 introduit le paramètre a-Tail pour n'inclure que les x dernières lignes
J'ai toujours utilisé Baretail pour la queue dans Windows. Il est gratuit et assez sympa.
Edit: pour une meilleure description de Baretail voir cette question
Il y a un certain nombre d'options, mais toutes ont des défauts avec des fonctionnalités plus avancées.
Le Windows Server 2003 Tools fournit une queue simple qui peut être téléchargé avec les outils du kit de ressources. Il est trop limité à bien des égards (verrouille le fichier suivi, manque de nombreuses options comme --pid), mais fera l'affaire pour la tâche de base de suivi d'un fichier.
GnuWin32 queue est buggé (α β γ) - des choses comme -f tout simplement ne fonctionnent pas.
UnxUtils queue semble mieux (-f fonctionne, mais --pid ne semble pas, -n, mais pas --lignes=n échoue avec -f), mais semble être un projet mort.
Cygwin est une grosse bouillie laide, pourrait peut-être simplement utiliser la DLL et le paquet coreutils - mais a toujours des problèmes comme --pid ne fonctionne pas avec les processus win32 natifs.
Toute personne intéressée par une queue CMDDOS utilisant des commandes batch (voir ci-dessous)
Ce n'est pas le préfet et les lignes se répètent parfois.
Utilisation: queue.MTD-d queue.MTD-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
J'ai utilisé Queue Pour Windows. Certainement pas aussi élégant que l'utilisation
{[0] } mais alors, vous utilisez Windows. ;)Je n'ai vu Log Expert nulle part parmi les réponses ici.
Il est personnalisable et est assez bon pour parcourir les fichiers journaux. Jusqu'à présent, c'est la meilleure visionneuse de journal graphique Windows pour moi.
Si vous ne voulez rien installer du tout, vous pouvez "construire votre propre" fichier batch qui fait le travail à partir des commandes Windows standard. Voici quelques conseils quant à la façon de le faire.
1) à l'Aide de trouver /c /v "" yourinput.fichier, obtenir le nombre de lignes dans votre fichier d'entrée. La sortie est quelque chose comme:
---------- T.TXT: 15
2) en utilisant pour / f , analysez cette sortie pour obtenir le nombre 15.
3) en utilisant set / a , calculez le nombre de lignes de tête qui doivent être sautée
4) en utilisant pour / f "skip=n" ignorer les lignes de tête et echo / traiter les lignes de queue.
Si je trouve le temps, je vais construire un tel fichier batch et le poster ici.
Avec Windows PowerShell, vous pouvez utiliser:
Get-Content <file> -Wait
Essayez Les Services Windows pour UNIX. Fournit des coquilles, awk, sed, etc. ainsi que la queue.
Je préfère TailMe en raison de la possibilité de regarder plusieurs fichiers journaux simultanément dans une fenêtre: http://www.dschensky.de/Software/Staff/tailme_en.htm
DOS A Aucune commande de queue; vous pouvez télécharger un binaire Windows pour GNU tail et d'autres outils GNU ici.
Une autre option serait d'installer MSYS (qui est plus léger que Cygwin).
La commande tail et bien d'autres sont disponibles dans le package Outils du kit de ressources Windows à partir de http://www.microsoft.com/en-us/download/details.aspx?id=17657
Je viens d'écrire ce petit script batch. Ce n'est pas aussi sophistiqué que la "queue" Unix, mais j'espère que quelqu'un peut l'Ajouter pour l'améliorer, comme limiter la sortie AUX 10 dernières lignes du fichier, etc. Si vous améliorez ce script, envoyez-le-moi à robbing ~[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
Si vous voulez utiliser les ports Win32 de certains utilitaires Unix (plutôt que d'installer Cygwin), je recommande GNU utilities pour Win32.
Poids plus léger que Cygwin et plus portable.
DOS type
fonctionne comme cat
de *Nux, bien que tout comme cat
, Il vide le fichier entier, donc ce n'est pas vraiment un vrai tail
, mais il sera disponible dans un pincement sans télécharger/installer un vrai tail
substitut.
Dans Far Manager appuyez sur F3 sur un fichier d'entrée standard de la visionneuse, puis End clé pour naviguer jusqu'à la fin du fichier. Si le fichier est mis à jour - Far le fera défiler automatiquement.
Visualiseurs de journaux Graphiques, bien qu'ils puissent être très bons pour l'affichage des fichiers journaux, ne répondent pas à la nécessité d'un utilitaire de ligne de commande qui peut être incorporé dans des scripts (ou des fichiers batch). Souvent, une commande aussi simple et polyvalente peut être utilisée dans le cadre d'une solution spécialisée pour un environnement particulier. Méthodes graphiques ne se prêtent pas facilement à une telle utilisation.
Je pense avoir trouvé un utilitaire qui répond au besoin de la fonction de queue dans les fichiers batch. Ça s'appelle "mtee", et c'est gratuit. Je l'ai incorporé dans un fichier batch, je travaille et il fait le travail très bien. Assurez-vous simplement de mettre l'exécutable dans un répertoire dans L'instruction PATH, et vous partez.
Voici le lien: