Mengakhiri ekor -f setelah mencetak n baris

10

Saya punya yang berikut ini.

  1. Proses Java menulis log pada file
  2. Script shell memulai proses Java.

Saya perlu membaca file log setelah memulai proses Java untuk memeriksa awal yang benar.

Saya sudah mencoba tail -ftetapi tetap menambahkan selamanya. Saya perlu tailberhenti setelah mencetak n baris. Ada cara seperti -nopsi untuk jalur previuos?

theShadow89
sumber
1
Apakah file log Anda dibersihkan setiap kali, setelah skrip shell menjalankan proses Java?
c0rp
Saya menggunakan log4j dengan mode tambahan untuk menulis file log. Putar setelah dimensi file naik hingga 10MB.
theShadow89

Jawaban:

24

Anda dapat menyalurkan output dari tail -fke headuntuk membatasi jumlah garis yang ditampilkan:

tail -f [PATH] | head -n 100

untuk hanya menampilkan 100 baris secara total.

David Foerster
sumber
7

Baris baru saja

Dengan dataran tail -f, 10 baris pertama dari file seperti yang sudah ada:

tail -f file.log | head -30

menulis 10 baris log.txtketika dijalankan, dan 20 (n-10) baris yang ditambahkan kemudian.

Dengan file log, Anda biasanya menggunakan -f( --follow) untuk melihat baris yang ditulis di masa depan.

Untuk melihat hanya 30 baris yang ditulis setelah taildimulai, batasi keluaran awal menjadi 0:

tail -f -n0 file.log | head -30
Volker Siegel
sumber