Apa konsep “buffer cincin kernel”, “level pengguna”, “level log”?


35

Saya sering melihat kata-kata "buffer ring kernel", "level pengguna", "level log" dan beberapa kata lain muncul bersamaan. misalnya

/ var / log / dmesg Berisi informasi buffer cincin kernel.

/var/log/kern.log Berisi hanya pesan-pesan kernel dari sembarang loglevel

/var/log/user.log Berisi informasi tentang semua log tingkat pengguna

Apakah semuanya tentang log? Bagaimana mereka terkait dan berbeda?

Dengan "level", saya akan membayangkan hierarki beberapa level?

Apakah "level pengguna" terkait dengan "ruang pengguna"?

Apakah mereka terkait dengan runlevel atau ring perlindungan dalam beberapa cara?

Jawaban:


41

Ya, semua ini ada hubungannya dengan logging. Tidak, tidak ada hubungannya dengan runlevel atau "cincin perlindungan".

Kernel menyimpan log-nya di buffer cincin. Alasan utama untuk ini adalah agar log dari startup sistem dapat disimpan sampai daemon syslog mendapat kesempatan untuk memulai dan mengumpulkannya. Kalau tidak, tidak akan ada catatan log apa pun sebelum startup daemon syslog. Isi buffer cincin itu dapat dilihat kapan saja menggunakan dmesgperintah, dan kontennya juga disimpan /var/log/dmesghanya ketika daemon syslog mulai dijalankan .

Semua log yang tidak berasal dari kernel dikirim karena dihasilkan ke daemon syslog sehingga tidak disimpan dalam buffer. Kernel log juga diambil oleh daemon syslog ketika dihasilkan tetapi mereka juga terus disimpan (tidak perlu, bisa dibilang) ke buffer cincin.

Level log dapat dilihat didokumentasikan dalam halaman syslog (3) dan adalah sebagai berikut:

  • LOG_EMERG : sistem tidak dapat digunakan
  • LOG_ALERT : tindakan harus segera diambil
  • LOG_CRIT : kondisi kritis
  • LOG_ERR : kondisi kesalahan
  • LOG_WARNING : kondisi peringatan
  • LOG_NOTICE : kondisi normal, tetapi signifikan
  • LOG_INFO : pesan informasi
  • LOG_DEBUG : pesan tingkat debug

Setiap level dirancang untuk menjadi kurang "penting" dari yang sebelumnya. File log yang merekam log di satu level juga akan merekam log di semua level yang lebih penting.

Perbedaan antara /var/log/kern.logdan /var/log/mail.log(misalnya) tidak ada hubungannya dengan level tetapi dengan fasilitas, atau kategori. Kategori-kategori tersebut juga didokumentasikan di halaman manual.


Terima kasih. (1) Apakah "level pengguna" terkait dengan "ruang pengguna"? (2) Dari apa yang Anda katakan, /var/log/kern.logdan /var/log/dmesgharus memiliki konten yang sama dengan pesan kernel? Tetapi isinya tidak sama.
Tim

"tingkat pengguna" bukanlah hal, sejauh yang saya tahu. Ada tingkat syslog, yang merupakan tingkat "pentingnya" dari pesan syslog (saya mencatat level-level), dan itu tidak ada hubungannya dengan ruang pengguna vs. ruang kernel. /var/log/kern.logharus mengandung dmesgkonten (mungkin diformat berbeda) dari waktu boot. Kecuali sudah lama sejak booting dan konten-konten itu telah diputar.
Celada

Pertanyaan kedua saya adalah: Ketika dmesgmencetak nilai buffer kernel cincin saat ini, nilai buffer buffer lama / lama disimpan /var/log/dmesg. Jadi dmesgoutput hanyalah subset /var/log/dmesgkonten baru-baru ini , dan mereka berbeda. Lalu apakah isinya /var/log/dmesg(tidak dmesgseperti dalam komentar Anda) dan /var/log/kernel.logsama?
Tim

Tergantung kapan! Segera setelah boot, /var/log/dmesgkonten kemungkinan akan mendekati akhir /var/log/kern.log. Jauh di kemudian hari, itu tidak akan ada di sana, itu akan diputar. Secara umum, /var/log/kern.logakan berisi log yang lebih tua dari snapshot buffer ring log kernel yang diberikan dan juga log yang lebih baru dari snapshot.
Celada


17

Untuk menjawab setidaknya bagian pertama dari pertanyaan Anda tentang dmesg:

/var/log/dmesg menyimpan konten 'buffer cincin kernel', buffer memori yang dibuat oleh kernel saat boot untuk menyimpan data log yang dihasilkannya segera setelah Anda melewati fase bootloader.

Buffer dering adalah jenis buffer khusus yang selalu berukuran konstan, menghapus pesan terlama saat pesan baru masuk. Teks yang disimpan dalam buffer cincin kernel adalah apa yang Anda lihat berkedip melewati Anda di layar ketika Anda pertama kali mem-boot Unix -seperti mesin dalam mode konsol (tanpa layar splash, Plymouth). Log kernel disimpan dalam buffer memori sehingga boot log ada di suatu tempat, sampai sistem telah bootstrap sendiri ke titik di mana syslogdaemon dapat mengambil alih.

dmesgLinux adalah bagian dari util-linuxpaket penting alat pemeliharaan sistem yang diterbitkan oleh kernel.org. Menurut dmesg(1)halaman manual,

dmesg digunakan untuk memeriksa atau mengontrol buffer cincin kernel.

Lihat: http://www.computerhope.com/unix/dmesg.htm

Di bawah init 'systemd', perintah ini dapat digunakan untuk mencetak buffer ring kernel
# journalctl --dmesg or journalctl -k:, thxs untuk koreksi @don_crissti

Mengeluarkan perintah dmesg | grep -i ethernet misalnya, akan mengurai buffer cincin kernel untuk string 'ethernet'.

Saya harap ini membantu setidaknya dengan bagian pertama dari pertanyaan Anda.

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.