Setara dengan Windows dari perintah Unix tail [ditutup]


410

Saya sedang mencari yang setara dengan perintah 'ekor' Unix yang akan memungkinkan saya untuk menonton output dari file log saat sedang ditulis.


Apakah ini membantu? http://malektips.com/xp_dos_0001.html http://commandwindows.com/server2003tools.htm Ini adalah tautan langsung Microsoft. Saya telah mengujinya di mesin saya (hanya karena penasaran dan karena saya mungkin membutuhkannya) dan berfungsi dengan baik.
johnny

1
Sebenarnya ada tail untuk XP, Hanya saja Microsoft tidak menginstalnya dengan versi standar XP; mereka mengemasnya dalam 'Windows Server 2003 Resource Kit Tools'. Anda bisa mendapatkannya di sini: microsoft.com/downloads/…
Matt Poush

1
Bukan masalah penipuan tetapi lihat di sini stackoverflow.com/questions/247234/…
Martin Beckett

mobaXTerm, gratis dan memiliki log plugin, Anda dapat melakukan tail -f /drives/c/logs/mylog.log
surfealokesea

3
Saya tidak berpikir ini harus ditutup, karena saya perlu hal yang sama untuk melacak debug di aplikasi windows saya. Ini tentang "alat perangkat lunak yang biasa digunakan oleh programmer", yang ada di topik
kristianp

Jawaban:


137

Saya sarankan menginstal sesuatu seperti Utilitas GNU untuk Win32 . Ini memiliki sebagian besar favorit, termasuk ekor.


5
Saya hanya mencoba menggunakan GNU tailpada file 2GB dan tersedak. morebekerja dengan baik (setidaknya melihat awal file).
Eric J.

@ EricJ., Sama untuk saya. Pada file 3GB yang bisa saya lakukan headtetapi tidak tail... Gagasan?
Alphaaa

@Alphaaa: Saya kira itu ada hubungannya dengan panggilan OS yang digunakan GNU Utilities. Lihat stackoverflow.com/a/4003487/141172
Eric J.

@ EricJ., Terima kasih, sepertinya memang relevan. Tapi saya baru sadar lebih mudah bagi saya untuk menggunakan solusi: Saya hanya akan menulis skrip sederhana yang melakukan tail:)
Alphaaa

1
Di sini saya percaya adalah solusi yang lebih baik: stackoverflow.com/questions/4426442/…
Dung

442

Jika Anda menggunakan PowerShell maka ini berfungsi:

Get-Content filenamehere -Wait -Tail 30

Posting komentar Stefan dari bawah, jadi orang tidak ketinggalan

PowerShell 3 memperkenalkan parameter -Tail untuk memasukkan hanya x baris terakhir


13
Sebenarnya ini tidak dinamis
Jey Geethan

16
Ini bagus untuk diketahui; Terima kasih. Tapi saya punya beberapa masalah dengan itu (pada Windows 7). (1) ini menampilkan seluruh file (tidak baik untuk file log besar, itulah sebabnya tailbisa berguna) (2) tidak se dinamis yang saya inginkan (mungkin karena perubahan OS / sistem file antara pengaturan saya dan poster lainnya ?). Yaitu, saya memutuskan bahwa shell Get-Contenttidak melakukan pembaruan sampai saya jalankan dirdi shell lain.
mpontillo

10
Saya pikir patut disebutkan bahwa PowerShell akan menjeda scroll / ouput jika Anda memilih sesuatu di dalam jendela terminal untuk memberi Anda kesempatan untuk membaca, menyalin / menempel, dll. Jika Anda menekan Enter, itu akan melanjutkan scrolling.
cbednarski

19
PowerShell 3 memperkenalkan parameter -Tail untuk menyertakan hanya x baris terakhir
Stefan Haberl

8
Jadi bukankah jawaban yang tepat untuk Powershell harus seperti itu Get-Content -Tail 100 -Wait .\logfile.log?
Henno Vermeulen

62

Saya selalu menggunakan Baretail untuk tailing di Windows. Gratis dan cukup bagus.

Sunting: untuk deskripsi Baretail yang lebih baik, lihat pertanyaan ini


Ini akhirnya menjadi solusi pertama yang bekerja untuk saya di [tegukan] Windows Server 2003 R2 SP1! Sangat mudah dengan installer, bekerja untuk tailing segera keluar dari kotak :)
cellepo

Mengunduh dan menjalankan executable yang tidak ditandatangani melalui HTTP mungkin bukan ide yang baik. Paling tidak, seseorang harus mengunduh melalui situs HTTPS mereka .
Zero3

Saya merasa luar biasa bahwa mereka tetap memelihara situs ini dan memperbarui sertifikat SSL hingga saat ini, sementara perangkat lunaknya tidak memutakhirkan sejak tahun 2006. Namun berfungsi dengan baik. Apa yang saya butuhkan. Windows Defender tidak menemukan ancaman.
Lionet Chen


24

Siapa pun yang tertarik pada ekor CMD DOS menggunakan perintah batch (lihat di bawah).

Itu bukan prefek, dan garis kadang-kadang berulang.

Penggunaan: 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

Ini cerdas, dan saya semua ingin memanfaatkan fungsionalitas yang ada saat mengunduh alat bukanlah pilihan! Kode ini akan memakan CPU, karena akan terus berputar dalam tindak lanjut untuk -f.
armstrhb

1
memiliki masalah yang sama dengan mengunduh dan makan cpu! menambahkan baris ini ping 127.0.0.1 -n 2 > nulsebelumnya goto followloop. ia mengirim dua ping dan menunggu 1 detik di antaranya. jadi itu akan membiarkan cpu hidup!: D
Mohsen ZareZardeyni

Luar biasa! Terima kasih banyak
John Fairbanks

1
mengapa menggunakan ping jika Anda bisa memanfaatkannya timeout /t 2?
namezero

23

Ada cukup banyak opsi, namun semuanya memiliki kekurangan dengan fitur yang lebih canggih.

  • Ekor GnuWin32 buggy ( α β γ ) - hal-hal seperti -f saja tidak berfungsi.

  • Ekor UnxUtils tampaknya lebih baik (-f berfungsi, tetapi --pid tampaknya tidak, -n tetapi tidak --lines = n gagal dengan -f), tetapi tampaknya merupakan proyek mati.

  • Cygwin adalah bubur besar jelek, mungkin hanya bisa menggunakan paket DLL dan coreutils - tetapi masih memiliki masalah seperti --pid tidak bekerja dengan proses win32 asli.


19

Saya telah menggunakan Tail Untuk Windows . Tentu tidak seanggun menggunakan

ekor
tapi kemudian, Anda menggunakan Windows. ;)


Saya Tail kedua untuk Windows. Saya suka karena saya bisa membuka dan memonitor banyak file di jendela yang sama.
Paul

cara powershell gc -tail tidak berfungsi jika Anda menggunakan Posh 1 atau Posh 2.x. Fungsionalitas gc -tail telah ditambahkan di Posh 3.0.
user1390375

16

Dengan Windows PowerShell Anda dapat menggunakan:

Get-Content <file> -Wait

15

Saya belum melihat Ahli Log di antara jawaban di sini.

Ini dapat disesuaikan dan cukup baik untuk berkeliling file log. Sejauh ini adalah penampil log grafis Windows terbaik untuk saya.

Sayangnya, perangkat lunak ini tidak lagi tersedia. Anda dapat membacanya di archive.org .


Saya suka fitur-fitur dari Log Expert, namun pengalaman saya bermasalah dengan Win 7 64 bit.
Clay

Saya kehilangan fungsionalitas "pandangan jelas".
Daniel Hári

13

Jika Anda tidak ingin menginstal apa pun, Anda dapat "membuat sendiri" file batch yang berfungsi dari perintah Windows standar. Berikut adalah beberapa petunjuk bagaimana melakukannya.

1) Menggunakan find / c / v "" yourinput.file , dapatkan jumlah baris dalam file input Anda. Outputnya seperti:

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

2) Menggunakan for / f , parsing output ini untuk mendapatkan angka 15.

3) Dengan menggunakan set / a , hitung jumlah garis head yang perlu dilewati

4) Menggunakan for / f "skip = n" melewati garis kepala dan gema / proses garis ekor.

Jika saya menemukan waktu, saya akan membangun file batch dan mengirimnya kembali ke sini.

EDIT: 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

5
Ini adalah kumpulan dari penjelasan sebelumnya. Ini menampilkan 10 baris terakhir dari file saat ini: ____ untuk / f "token = 3" %% f in ('find / c / v ""% 0') lakukan set nbLines = %% f ____ set / a nbSkippedLines = % nbLines% -10 ____ untuk / f "lewati =% nbSkippedLines% delims =" %% d di (% 0) lakukan gema %% d
Nicolas

1
Inilah yang diinginkan oleh poster itu, dan ia bekerja dengan baik.
Jackie Yeh

Terima kasih untuk kodenya! Saya menambahkannya ke jawaban dengan nomor parameter yang dikoreksi dan satu lagi ke jumlah baris. Perhatikan itu akan menampilkan garis keluar. PS: Saya menggunakannya untuk mengekor file 1.5Gb dan mendapatkan hasilnya hanya dalam 15 detik.
Leopoldo Sanczyk

Sebenarnya, pada langkah # 4 akan lebih baik saya pikir untuk menggunakan perintah 'lebih' yang mengambil parameter untuk jumlah baris untuk dilewati. Bahkan lebih cepat saya akan berpikir.
Philibert Perusse

8

Saya telah menggunakan Mtail baru-baru ini dan tampaknya berfungsi dengan baik. Ini adalah tipe GUI seperti baretail yang disebutkan di atas. masukkan deskripsi gambar di sini



5

Coba Layanan Windows untuk UNIX . Memberikan kerang, awk, sed, dll, serta ekor.

Pembaruan -: Sayangnya, pada 2019 sistem ini tidak lagi tersedia di Pusat Unduhan Microsoft.


1
Ini memiliki masalah pada Win7 dan yang lebih baru.
Doug Wilson

1
Betulkah? Anda kehabisan suara untuk memilih jawaban empat tahun? Cara untuk berkontribusi.
Dave

9
@Dave: Meskipun pertanyaannya sudah lama, orang-orang masih mencari untuk mencoba menemukan jawaban terbaik. Jika jawaban dari hampir 5 tahun yang lalu sudah tidak relevan atau tidak bagus lagi, mengapa kita tidak perlu menurunkannya? Seluruh situs ini adalah tentang mendapatkan informasi berharga lebih cepat - hari ini, bukan 5 tahun yang lalu.
Oliver

1
@ Hellfire - Anda harus mengedit jawaban dengan ketentuan bahwa itu tidak berfungsi dengan Windows 7. Ini konyol untuk hanya berkomentar.
Preet Sangha


4

DOS tidak memiliki perintah ekor; Anda dapat mengunduh biner Windows untuk GNU tail dan alat GNU lainnya di sini .



4

DOS typeberfungsi seperti * nux's cat, meskipun sama seperti cat, ia membuang seluruh file, jadi itu tidak benar tail, tetapi akan tersedia dalam keadaan darurat tanpa mengunduh / menginstal tailpengganti yang benar .


4

Saya baru saja menulis skrip batch kecil ini. Itu tidak secanggih Unix "tail", tetapi mudah-mudahan seseorang dapat menambahkannya untuk memperbaikinya, seperti membatasi output ke 10 baris terakhir file, dll. Jika Anda benar-benar memperbaiki skrip ini, silakan kirim bagi saya di merampok ~ [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

ide bagus menggunakan perintah "ketik", tetapi Anda tidak dapat menyalurkannya!
eadmaster

Ini hanya memuat ulang file teks.

versi batch dari gema memiliki perilaku yang aneh, jika tidak diberikan argumen itu hanya keluar, tetapi jika Anda memanggil perintah echo.dengan trailing dot pada kata (dan bukan sebagai argumen terpisah) itu akan mencetak satu baris baru.
scragar


3

Jika Anda ingin menggunakan port Win32 dari beberapa utilitas Unix (daripada menginstal Cygwin), saya merekomendasikan utilitas GNU untuk Win32 .

Bobot lebih ringan dari Cygwin dan lebih portabel.



3

Di Far Manager , tekan F3pada file untuk masuk ke penampil standar, lalu Endtombol untuk menavigasi ke akhir file.

Jika file diperbarui, Far Manager akan menggulirnya secara otomatis.



0

Penampil log grafis, walaupun mereka sangat baik untuk melihat file log, tidak memenuhi kebutuhan akan utilitas baris perintah yang dapat dimasukkan ke dalam skrip (atau file batch). Seringkali perintah yang sederhana dan bertujuan umum seperti itu dapat digunakan sebagai bagian dari solusi khusus untuk lingkungan tertentu. Metode grafis tidak cocok untuk digunakan seperti itu.



0

Saya pikir saya telah menemukan sebuah utilitas yang memenuhi kebutuhan untuk fungsi ekor dalam file batch. Ini disebut "mtee", dan gratis. Saya telah memasukkannya ke dalam file batch yang sedang saya kerjakan dan melakukan pekerjaan dengan sangat baik. Pastikan untuk meletakkan executable ke direktori dalam pernyataan PATH, dan pergilah.

Inilah tautannya:

mtee

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.