“Çekirdek halkası tamponu”, “kullanıcı seviyesi”, “günlük seviyesi” kavramları nelerdir?


35

Sık sık "kernel ring buffer", "user level", "log level" kelimelerini gördüm ve başka kelimeler de ortaya çıkıyor. Örneğin

/ var / log / dmesg Çekirdek halkası tampon bilgisini içerir.

/var/log/kern.log Yalnızca çekirdeğin herhangi bir günlük düzeyindeki mesajlarını içerir

/var/log/user.log Tüm kullanıcı seviyesi günlükleri hakkında bilgi içerir

Hepsi günlüklerle mi ilgili? Nasıl ilişkili ve farklılar?

"Seviye" ile, birden çok seviyeli bir hiyerarşi hayal ediyorum?

"Kullanıcı seviyesi", "kullanıcı alanı" ile ilişkili midir?

Runlevel veya koruma halkası ile bir şekilde ilişkili mi?

Yanıtlar:


41

Evet, bunların hepsi günlüklerle ilgili. Hayır, bunların hiçbirinin çalışma seviyesi veya "koruma halkası" ile ilgisi yok.

Çekirdek günlüklerini bir halka arabelleğinde tutar. Bunun temel nedeni, sistem başlangıcındaki günlüklerin syslog arka plan programının başlatılması ve toplanması için bir şans elde edinceye kadar kurtarılmasıdır. Aksi halde, syslog arka plan programının başlatılmasından önce herhangi bir günlük kaydı olmazdı. Bu halka arabelleğinin içeriği, dmesgkomut kullanılarak herhangi bir zamanda görülebilir ve içerikleri, aynı /var/log/dmesgşekilde syslog arka plan programı başlarken kaydedilir .

Çekirdekten gelmeyen tüm kütükler, syslog daemon'a oluşturuldukları için gönderilir, böylece hiçbir tamponda tutulmazlar. Çekirdek günlükleri, syslog arka plan programı tarafından oluşturuldukça da toplanır, ancak halka arabelleğine de (gereksiz yere, tartışmalı olarak) kaydedilmeye devam edilir.

Kütük seviyeleri syslog (3) kılavuz sayfasında belgelendirilebilir ve aşağıdaki gibidir:

  • LOG_EMERG : sistem kullanılamaz
  • LOG_ALERT : hemen işlem yapılmalı
  • LOG_CRIT : kritik koşullar
  • LOG_ERR : hata koşulları
  • LOG_WARNING : uyarı koşulları
  • LOG_NOTICE : normal, ancak önemli, koşul
  • LOG_INFO : bilgilendirme mesajı
  • LOG_DEBUG : hata ayıklama düzeyinde mesaj

Her seviye bir öncekinden daha az "önemli" olacak şekilde tasarlanmıştır. Günlükleri bir seviyede kaydeden bir günlük dosyası, tüm önemli düzeylerde de günlükleri kaydeder.

/var/log/kern.logVe /var/log/mail.log(örneğin) arasındaki fark , seviye ile değil tesis veya kategori ile ilgilidir. Kategoriler, man sayfasında da belgelenmiştir.


Teşekkürler. (1) "Kullanıcı seviyesi", "kullanıcı alanı" ile ilişkili midir? Gönderen (2) dediniz, neyi /var/log/kern.logve /var/log/dmesgçekirdek mesajları gibi aynı içeriğe sahip olmalıdır? Ancak içerikleri aynı değil.
Tim

"kullanıcı seviyesi" bildiğim kadarıyla bir şey değil. Bir syslog mesajının "önem" seviyesi olan syslog seviyesi vardır (seviyeleri listeledik) ve kullanıcı alanı ile çekirdek alanı arasındaki bir ilgisi yoktur. içeriği önyükleme zamanından (belki de farklı biçimde biçimlendirilmiş) /var/log/kern.logiçermelidir dmesg. Önyüklemeden bu yana uzun zaman geçmediyse ve bu içerikler dışa aktarılmışsa.
Celada

İkinci sorum şudur: dmesgÇekirdek halkası arabelleğinin geçerli değerlerini yazdırırken, arabelleğin geçmiş / eski değerleri de saklanır /var/log/dmesg. Bu yüzden dmesgçıktı, yalnızca yeni bir /var/log/dmesgiçerik alt kümesidir ve bunlar farklıdır. O zaman /var/log/dmesg( dmesgyorumunuzdaki gibi) içeriği /var/log/kernel.logaynı mı?
Tim

Ne zamana bağlı! Önyüklemeden kısa bir süre sonra, /var/log/dmesgiçerik muhtemelen sonuna yakın olacak /var/log/kern.log. Çok sonra, orada olmayacak, dışa dönmüş olacak. Genel olarak, /var/log/kern.logçekirdeğin log ring arabelleğinin herhangi bir anlık görüntüsünden daha eski olan günlükleri ve ayrıca anlık görüntüden daha yeni olan günlükleri içerecektir.
Celada


17

En azından sorunuzun ilk kısmına cevap vermek için dmesg:

/var/log/dmesg 'çekirdek halkası arabelleği' içeriğini, çekirdeğin önyüklemesinde oluşturduğu günlük verileri depolayacağınız, önyükleme aşamasında geçirdiğiniz andan itibaren oluşturduğu günlük verilerini depolayan bir bellek arabelleği.

Bir halka arabelleği, her zaman sabit bir boyutta, yeni mesajlar geldiğinde en eski mesajları silen özel bir tür arabellektir. Çekirdek halkası arabelleğinde depolanan metin, bir Unix'i ilk açtığınızda ekranda yanıp sönen gördüğünüz şeydir. modunda konsol benzeri makine (giriş ekranı yok, Plymouth). Çekirdek günlüğü, bir bellek arabelleğinde saklanır, böylece sistem kendini syslogarka planın devralınabileceği noktaya getirene kadar önyükleme günlüklerinin olması gereken bir yere sahip olur .

dmesgLinux altında, util-linuxkernel.org tarafından yayınlanan , temel sistem bakım araçları paketinin bir parçasıdır . Göre dmesg(1)adam sayfasında,

dmesg, çekirdek halkası tamponunu incelemek veya kontrol etmek için kullanılır.

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

'Systemd' init altında, bu komut, çekirdek halkası tamponunu yazdırmak için kullanılabilir:
# journalctl --dmesg or journalctl -kthxs, @don_crissti

dmesg | grep -i ethernet Örneğin komutu verdikten sonra , 'ethernet' dizgisinin çekirdek halkası tamponunu ayrıştırır.

Umarım bu en azından talebinizin ilk bölümünde size yardımcı olur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.