Які поняття "буфер кільця ядра", "рівень користувача", "рівень журналу"?


35

Я часто бачив слова "буфер кільця ядра", "рівень користувача", "рівень журналу" та деякі інші слова. напр

/ var / log / dmesg Містить інформацію про буфер кільця ядра.

/var/log/kern.log Містить лише повідомлення ядра будь-якого рівню

/var/log/user.log Містить інформацію про всі журнали користувачів

Чи всі вони про журнали? Наскільки вони споріднені та різні?

За "рівнем" я б уявив собі ієрархію декількох рівнів?

Чи "рівень користувача" пов'язаний з "простором користувача"?

Чи певним чином вони пов'язані з рівнем руху або захисним кільцем ?

Відповіді:


41

Так, все це пов'язане з веденням журналу. Ні, жодне з них не пов'язане з рівнем руху або "захисним кільцем".

Ядро зберігає свої журнали в кільцевому буфері. Основна причина цього полягає в тому, що журнали із запуску системи зберігаються, поки демон демона syslog не отримає шанс запустити та зібрати їх. Інакше до запуску демона syslog не було б запису жодних журналів. Вміст цього буфера кільця можна побачити в будь-який час за допомогою dmesgкоманди, і його вміст також зберігається так /var/log/dmesgсамо, як запускається демон системи syslog.

Усі журнали, які не надходять з ядра, надсилаються по мірі їх генерування до демона syslog, тому вони не зберігаються в жодних буферах. Журнали ядра також підхоплюються демоном syslog під час їх генерування, але вони також продовжують зберігатись (зайво, можливо,) у кільцевому буфері.

Рівні журналів можна побачити задокументовано на сторінці syslog (3) та є такими:

  • LOG_EMERG : система непридатна для використання
  • LOG_ALERT : дії потрібно вжити негайно
  • LOG_CRIT : критичні умови
  • LOG_ERR : умови помилки
  • LOG_WARNING : умови попередження
  • LOG_NOTICE : нормальний, але значний стан
  • LOG_INFO : інформаційне повідомлення
  • LOG_DEBUG : повідомлення на рівні налагодження

Кожен рівень покликаний бути менш "важливим", ніж попередній. Файл журналу, який записує журнали на одному рівні, також записуватиме журнали на всіх важливіших рівнях.

Різниця між /var/log/kern.logі /var/log/mail.log(наприклад) пов'язана не з рівнем, а з об'єктом або категорією. Категорії також задокументовані на сторінці сторінки.


Спасибі. (1) Чи "рівень користувача" пов'язаний з "простором користувача"? (2) З того, що ви сказали, /var/log/kern.logі /var/log/dmesgмає бути той самий вміст, що і повідомлення ядра? Але їх зміст не однаковий.
Тім

Наскільки я знаю, "рівень користувача" - це не річ. Існує рівень syslog, який є рівнем "важливості" повідомлення syslog (я перерахував рівні), і він не має нічого спільного з простором користувача та простором ядра. /var/log/kern.logповинен містити dmesgвміст (можливо, відформатований інакше) від часу завантаження. Якщо тільки не минуло часу, коли завантажився і цей вміст було вимкнено.
Селада,

Моє друге питання: Хоча dmesgвиводить поточні значення буфера кільця ядра, попереднє / старе значення буфера зберігаються в /var/log/dmesg. Таким чином, dmesgвихід є лише нещодавньою підмножиною /var/log/dmesgвмісту, і вони різні. Тоді вміст /var/log/dmesg(не dmesgяк у вашому коментарі) і /var/log/kernel.logтой самий?
Тім

Залежить коли! Незабаром після завантаження /var/log/dmesgвміст, ймовірно, буде наприкінці /var/log/kern.log. Набагато пізніше його там не буде, воно повернеться. Загалом, вони /var/log/kern.logбудуть містити журнали, які є старшими за будь-який даний знімок буфера кільця журналу ядра, а також журнали, новіші за знімок.
Селада


17

Щоб відповісти хоча б на першу частину вашого питання про dmesg:

/var/log/dmesg зберігає вміст 'буфера кільця ядра', буфера пам'яті, створеного ядром під час завантаження, в якому зберігаються дані журналу, які він генерує, як тільки ви проходите фазу завантажувача.

Буфер дзвінка - це спеціальний тип буфера, який завжди має постійний розмір, видаляючи найдавніші повідомлення, коли надходять нові повідомлення. Текст, що зберігається в буфері кільця ядра, - це те, що ви бачите, що проходить мимо вас на екрані під час першого завантаження Unix -подібна машина в консольному режимі (відсутність заставки, Плімут). Журнал ядра зберігається в буфері пам'яті, щоб журнали завантаження десь були, поки система не завантажиться до того моменту, коли syslogдемон може перейняти.

dmesgпід Linux є частиною найважливішого util-linuxпакета інструментів технічного обслуговування, опублікованих kernel.org. За даними dmesg(1)сторінки людини,

dmesg використовується для вивчення або управління буфером кільця ядра.

Дивіться: http://www.computerhope.com/unix/dmesg.htm

У розділі 'systemd' init цю команду можна використовувати для друку буфера кільця ядра:,
# journalctl --dmesg or journalctl -kthxs для виправлення @don_crissti

dmesg | grep -i ethernet Наприклад, видаючи команду , буде аналізувати буфер кільця ядра для рядка 'ethernet'.

Я сподіваюся, що це допоможе хоча б у першій частині вашого запиту.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.