Bagaimana cara memonitor hanya n baris terakhir dari file log?

110

Saya memiliki file log yang sedang tumbuh yang ingin saya tampilkan hanya 15 baris terakhir. Inilah yang saya tahu bisa saya lakukan:

tail -n 15 -F mylogfile.txt

Ketika file log diisi, tailtambahkan baris terakhir ke tampilan.

Saya mencari solusi yang hanya menampilkan 15 baris terakhir dan menyingkirkan baris sebelum 15 terakhir setelah diperbarui. Apakah Anda punya ide?

Marc-Olivier Titeux
sumber
28
Ubah ukuran jendela terminal Anda menjadi 15 baris.
Jonathan
1
Itu bagus juga.
Marc-Olivier Titeux
3
@Jonathan genius!
Marsellus Wallace
Tidak dapat meningkatkan komentar jonathan atau kehilangan rasa memiliki 15 upvotes
jdero

Jawaban:

151

Mungkin cukup menggunakan arloji:

$ watch tail -n 15 mylogfile.txt
William Pursell
sumber
1
Bagus! Terima kasih banyak. Saya juga belajar perintah 'menonton' dalam proses.
Marc-Olivier Titeux
1
Ketahuilah bahwa solusi ini tidak berfungsi jika file tumbuh lebih dari 15 baris di antara dua watchpembaruan. Anda dapat menggunakan -nuntuk mengubah interval ini.
bfontaine
25

Jika Anda menggunakan arloji, cobalah -nopsi untuk mengontrol interval antara setiap pembaruan.

Dengan demikian, yang berikut akan memanggil ekor setiap 2 detik

$ watch -n 2 tail -n 15 mylogfile.txt

sementara ini polling setiap 1 detik

$ watch -n 1 tail -n 15 mylogfile.txt
Turgon
sumber
13

Anda dapat mengalirkan file log yang berjalan kurang dan menekan SHIFT + F yang akan mengalirkan file menggunakan lebih sedikit. $ less mylogfile.txt Kemudian cukup tekan SHIFT + F dan itu akan mengalir. Saya pikir akan lebih mudah untuk memonitor file log yang diperbarui.

Niklas Rosencrantz
sumber
1
Itu sangat bagus!
kaiser
8

Mungkin Anda menemukan -dparam berguna.

man watch

-d Sorot perbedaan antara pembaruan berturut-turut. Opsi akan membaca argumen opsional yang mengubah sorotan menjadi permanen, memungkinkan untuk melihat apa yang telah berubah setidaknya sekali sejak iterasi pertama.

michalzuber
sumber
1
Tangkapan yang bagus juga!
Marc-Olivier Titeux
0

Di Solaris, AIX atau HPUX atau seperti UNIX (termasuk Linux) Anda dapat menggunakan skrip untuk memantau log atau hal-hal seperti itu:

while true; 
    clear; 
    do date; 
    echo ;
    echo "MONITORING LOG IN "/path/to/file.log": "; 
    echo "Obs.: Last 20 lines of a logfile:
    echo ;
    tail -20 /path/to/file.log;
    echo ;
sleep 5; 
done
João Gerardo
sumber