Cara melihat x terbaru dari log service systemctl

21

Saya sedang mencari cara, untuk hanya mencetak garis X terakhir dari layanan systemctl di Debian. Saya ingin menginstal kode ini ke dalam skrip, yang menggunakan entri log yang dicetak dan terbaru. Saya telah menemukan posting ini tetapi saya tidak dapat memodifikasinya untuk keperluan saya.

Saat ini saya menggunakan kode ini, yang hanya memberi saya potongan kecil file log:

journalctl --unit=my.service --since "1 hour ago" -p err

Untuk memberikan contoh seperti apa hasilnya, cukup ketik perintah di atas untuk layanan apa pun dan gulir hingga akhir log. Kemudian salin 300 baris terakhir mulai dari bawah.

Ide saya adalah menggunakan egrep ex. egrep -m 700 .tapi saya tidak beruntung sejak sekarang.

pengguna3191334
sumber

Jawaban:

48
journalctl --unit=my.service -n 100 --no-pager
sourcejedi
sumber
7

Hanya pipa output ke tail:

journalctl --unit=my.service | tail -n 300

The tailperintah mencetak baris terakhir (10 secara default) yang diterima di stdin ke stdout.

dr01
sumber
1
Benar-benar lupa tentang ekor - ide bagus, terima kasih banyak!
user3191334
5
Ekor bisa sangat lambat untuk kayu bulat besar. Built-in -njournalctrl adalah apa yang Anda inginkan. misalnyajournalctl -n 300
Drakes
4

Jika Anda ingin melihat n jumlah baris terakhir dan melihat pesan baru saat dicetak ke log, coba ini:

journalctl -u <service name> -n <number of lines> -f

Di mana -nmenunjukkan jumlah baris yang ingin Anda lihat dari ekor log, dan -fmenentukan bahwa Anda ingin mengikuti log saat itu berubah.

Derek Soike
sumber
4

Hanya:

journalctl -u SERVICE_NAME -e

Parameter -e singkatan dari:

-e --pendana; Langsung lompat ke ujung jurnal di dalam alat pager tersirat. Ini menyiratkan -n 1000 untuk menjamin bahwa pager tidak akan buffer log ukuran tidak terbatas. Ini mungkin diganti dengan -n eksplisit dengan beberapa nilai numerik lainnya, sementara -nall akan menonaktifkan batas ini.

Daniel Kmak
sumber
1

karena solusi perintah ekor aleady disediakan. Saya mencoba dengan menggunakan perintah sed dan bekerja dengan baik

Perintah di bawah ini akan menampilkan 300 baris terakhir

journalctl --unit=my.service | sed -e :a -e '$q;N;301,$D;ba' 
Praveen Kumar BS
sumber