Tôi đang tìm kiếm tương đương với lệnh 'đuôi' Unix sẽ cho phép tôi xem đầu ra của tệp nhật ký trong khi nó được ghi vào.
Tôi đang tìm kiếm tương đương với lệnh 'đuôi' Unix sẽ cho phép tôi xem đầu ra của tệp nhật ký trong khi nó được ghi vào.
Câu trả lời:
Tôi khuyên bạn nên cài đặt một cái gì đó như GNU Utility cho Win32 . Nó có hầu hết các mục yêu thích, bao gồm cả đuôi.
tail
trên tệp 2GB và nó bị sặc. more
hoạt động tốt (ít nhất là xem phần đầu của tệp).
head
nhưng không tail
... Ý tưởng?
tail
:)
Nếu bạn sử dụng PowerShell thì nó hoạt động:
Get-Content filenamehere -Wait -Tail 30
Đăng bình luận của Stefan từ bên dưới, vì vậy mọi người đừng bỏ lỡ nó
PowerShell 3 giới thiệu một tham số -Tail chỉ bao gồm các dòng x cuối cùng
tail
có thể hữu ích) (2) nó không động như tôi muốn (có thể do thay đổi hệ điều hành / hệ thống tệp giữa thiết lập của tôi và các áp phích khác ?). Đó là, tôi xác định rằng shell thực hiện Get-Content
đôi khi không cập nhật cho đến khi tôi chạy dir
trong shell khác.
Get-Content -Tail 100 -Wait .\logfile.log
nào?
Tôi đã luôn sử dụng Baretail để theo đuôi trong Windows. Nó miễn phí và khá đẹp.
Chỉnh sửa: để mô tả rõ hơn về Baretail, hãy xem câu hỏi này
Bất cứ ai quan tâm đến đuôi DOS DOS bằng cách sử dụng các lệnh bó (xem bên dưới).
Nó không hoàn hảo, và đôi khi lặp lại.
Cách sử dụng: 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
trước goto followloop
. nó sẽ gửi hai ping và đợi 1 giây trong khoảng giữa. vì vậy nó sẽ cho cpu sống !: D
timeout /t 2
?
Có khá nhiều tùy chọn, tuy nhiên tất cả chúng đều có lỗ hổng với các tính năng cao cấp hơn.
GnuWin32 đuôi là buggy ( alpha beta gamma ) - những thứ như -f chỉ đơn giản không làm việc.
Đuôi UnxUtils có vẻ tốt hơn (-f hoạt động, nhưng --pid dường như không, -n nhưng không --lines = n thất bại với -f), nhưng dường như là một dự án đã chết.
Cygwin là một công cụ lớn xấu xí, có lẽ chỉ có thể sử dụng gói DLL và coreutils - nhưng vẫn có vấn đề như --pid không hoạt động với các quy trình win32 gốc.
Tôi đã sử dụng Tail cho Windows . Chắc chắn là không thanh lịch như sử dụng
đuôinhưng sau đó, bạn đang sử dụng Windows. ;)
Tôi chưa thấy Log Expert ở bất cứ đâu trong số các câu trả lời ở đây.
Nó có thể tùy chỉnh và khá tốt để đi xung quanh các tệp nhật ký. Cho đến nay nó là trình xem nhật ký đồ họa Windows tốt nhất đối với tôi.
Thật không may, phần mềm này không còn có sẵn. Bạn có thể đọc về nó trên archive.org .
Nếu bạn không muốn cài đặt bất cứ thứ gì, bạn có thể "xây dựng tệp bó" của riêng mình, thực hiện công việc từ các lệnh Windows tiêu chuẩn. Dưới đây là một số gợi ý về cách làm điều đó.
1) Sử dụng find / c / v "" yourinput.file , lấy số lượng dòng trong tệp đầu vào của bạn. Đầu ra giống như:
---------- T.TXT: 15
2) Sử dụng cho / f , phân tích đầu ra này để lấy số 15.
3) Sử dụng tập hợp / a , tính toán số dòng đầu cần bỏ qua
4) Sử dụng for / f "Skip = n" bỏ qua các dòng đầu và echo / xử lý các dòng đuôi.
Nếu tôi tìm thấy thời gian, tôi sẽ xây dựng một tệp bó như vậy và gửi lại ở đây.
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
Hãy dùng thử Dịch vụ Windows cho UNIX . Cung cấp vỏ, awk, sed, vv cũng như đuôi.
Cập nhật -: Thật không may, kể từ năm 2019, hệ thống này không còn có sẵn trên Trung tâm Tải xuống của Microsoft.
Tôi thích TailMe vì khả năng xem nhiều tệp nhật ký cùng một lúc trong một cửa sổ: http://www.dschensky.de/Software/Staff/tailme_en.htm
DOS có không đuôi lệnh; bạn có thể tải xuống tệp nhị phân Windows cho đuôi GNU và các công cụ GNU khác tại đây .
Một lựa chọn khác là cài đặt MSYS (có trọng lượng nhẹ hơn Cygwin).
Tôi chỉ viết kịch bản lô nhỏ này. Nó không phức tạp như "đuôi" Unix, nhưng hy vọng ai đó có thể thêm vào nó để cải thiện nó, như giới hạn đầu ra ở 10 dòng cuối của tệp, v.v. Nếu bạn cải thiện tập lệnh này, vui lòng gửi nó với tôi lúc cướp ~ [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
echo.
với một dấu chấm trên từ (và không phải là một đối số riêng biệt) thì nó sẽ in một dòng mới.
Các tail
lệnh và nhiều người khác có sẵn trong các Công cụ Windows Resource Kit gói.
Nếu bạn muốn sử dụng cổng Win32 của một số tiện ích Unix (thay vì cài đặt Cygwin), tôi khuyên dùng tiện ích GNU cho Win32 .
Trọng lượng nhẹ hơn Cygwin và di động hơn.
Cài đặt MKS Toolkit ... Để bạn có thể chạy tất cả các lệnh Unix trên Windows.
Lệnh là:
tail -f <file-name>
Trong Far Manager , nhấn F3vào một tệp để vào trình xem chuẩn, sau đó chọnEnd nhấn phím để điều hướng đến cuối tệp.
Nếu tệp được cập nhật, Far Manager sẽ tự động cuộn nó.
Tôi đang sử dụng Trình xem nhật ký Kiwi . Nó miễn phí.
Trình xem nhật ký đồ họa, trong khi chúng có thể rất tốt để xem tệp nhật ký, không đáp ứng nhu cầu về tiện ích dòng lệnh có thể được tích hợp vào tập lệnh (hoặc tệp bó). Thông thường một lệnh đơn giản và có mục đích chung như vậy có thể được sử dụng như một phần của giải pháp chuyên biệt cho một môi trường cụ thể. Phương pháp đồ họa không cho vay dễ dàng sử dụng như vậy.
Tôi nghĩ rằng tôi đã tìm thấy một tiện ích đáp ứng nhu cầu cho chức năng đuôi trong các tệp bó. Nó được gọi là "mtee", và nó miễn phí. Tôi đã kết hợp nó vào một tệp bó tôi đang làm việc và nó thực hiện công việc rất độc đáo. Chỉ cần đảm bảo đặt tệp thực thi vào một thư mục trong câu lệnh PATH và bạn đi.
Đây là liên kết: