Linux кольцевой буфер ядра

Linux кольцевой буфер ядра

В этой странице описана системный вызов ядра syslog(), который используется для управления буфером printk() в ядре; обёрточная функция glibc для данного системного вызова называется klogctl().

Буфер журнала ядра

Команды

Аргументы bufp и len игнорируются.

SYSLOG_ACTION_CONSOLE_ON (7) Если ранее выполнялась команда SYSLOG_ACTION_CONSOLE_OFF, то эта команда восстанавливает значение console_loglevel, которое было сохранено. До Linux 2.6.32 эта команда просто изменяла console_loglevel на default_console_loglevel. Смотрите описание /proc/sys/kernel/printk ниже.

Аргументы bufp и len игнорируются.

SYSLOG_ACTION_CONSOLE_LEVEL (8) Вызов присваивает console_loglevel значение, указанное в len, которое должно быть целым числом от 1 до 8 (включительно). Ядро неявно изменяет минимальное значение minimum_console_loglevel на len. Подробности смотрите в разделе Уровень протоколирования. Аргумент bufp игнорируется. SYSLOG_ACTION_SIZE_UNREAD (9) (начиная с Linux 2.4.10) Вызов возвращает количество байт, доступных для чтения из буфера журнала ядра командой 2 (SYSLOG_ACTION_READ). Аргументы bufp и len игнорируются. SYSLOG_ACTION_SIZE_BUFFER (10) (начиная с Linux 2.6.6) Эта команда возвращает полный размер буфера журнала ядра. Аргументы bufp и len игнорируются.

Все команды кроме 3 и 10 требуют привилегий. В ядрах Linux до версии 2.6.37, команды 3 и 10 были доступны непривилегированным процессам; начиная с Linux 2.6.37, эти команды разрешены из непривилегированных процессов только, если значение /proc/sys/kernel/dmesg_restrict равно 0. До Linux 2.6.37 под «привилегиями» понималось, что вызывающий имеет мандат CAP_SYS_ADMIN. Начиная с Linux 2.6.37 «привилегией» считается, что вызывающий имеет либо мандат CAP_SYS_ADMIN (теперь устарел для такого использования), либо (новый) мандат CAP_SYSLOG.

/proc/sys/kernel/printk

Уровень протоколирования

Константа ядра Значение уровня Назначение
KERN_EMERG 0 Система не пригодна к использованию
KERN_ALERT 1 Необходимо немедленно принять меры
KERN_CRIT 2 Критические состояния
KERN_ERR 3 Состояния ошибки
KERN_WARNING 4 Условия предупреждения
KERN_NOTICE 5 Обычное, но важное событие
KERN_INFO 6 Информационное сообщение
KERN_DEBUG 7 Отладочные сообщения

Ядерная процедура printk() печатает сообщение на консоль только, если его уровень протоколирования меньше значения console_loglevel.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

При ошибке возвращается -1, а переменной errno присваивается номер ошибки.

Источник

Команда Dmesg в Linux

Dmesg Command in Linux

В этом руководстве мы рассмотрим основы dmesg команды.

Ядро Linux — это ядро ​​операционной системы, которое контролирует доступ к системным ресурсам, таким как процессор, устройства ввода-вывода, физическая память и файловые системы. Ядро записывает различные сообщения в кольцевой буфер ядра в процессе загрузки и во время работы системы. Эти сообщения содержат различную информацию о работе системы.

Кольцевой буфер ядра — это часть физической памяти, которая содержит сообщения журнала ядра. Он имеет фиксированный размер, что означает, что после заполнения буфера старые записи журналов перезаписываются.

dmesg — Утилита командной строки используется для печати и управления кольцевого буфера ядра в Linux и других Unix-подобных операционных систем. Это полезно для изучения загрузочных сообщений ядра и устранения проблем, связанных с оборудованием.

Использование dmesg команды

Синтаксис dmesg команды следующий:

При вызове без каких-либо параметров dmesg записывает все сообщения из кольцевого буфера ядра в стандартный вывод:

По умолчанию все пользователи могут запускать dmesg команду. Однако в некоторых системах доступ к ним dmesg может быть ограничен для пользователей без полномочий root. В этой ситуации при вызове dmesg вы получите сообщение об ошибке, как показано ниже:

Читайте также:  Php windows script host

Параметр ядра kernel.dmesg_restrict указывает, могут ли непривилегированные пользователи dmesg просматривать сообщения из буфера журнала ядра. Чтобы снять ограничения, установите его на ноль:

Обычно выходные данные содержат много строк информации, так что только последняя часть выходных данных является видимой. Чтобы увидеть одну страницу за раз, перенаправьте вывод в утилиту пейджера, такую ​​как less или more :

—color=always Используется для сохранения цветного вывода.

Если вы хотите фильтровать сообщения буфера, используйте grep . Например, чтобы просмотреть только сообщения, связанные с USB, вы должны набрать:

dmesg читает сообщения, сгенерированные ядром, из /proc/kmsg виртуального файла. Этот файл предоставляет интерфейс к кольцевому буферу ядра и может быть открыт только одним процессом. Если syslog в вашей системе запущен процесс, и вы пытаетесь прочитать файл с помощью cat , или less , команда зависнет.

syslog Демон отвалов сообщения ядра /var/log/dmesg , так что вы можете использовать этот файл журнала:

Форматирование dmesg вывода

Команда dmesg предоставляет ряд опций, которые помогут вам отформатировать и отфильтровать вывод.

Одна из наиболее часто используемых опций dmesg — это -H ( —human ), которая обеспечивает удобочитаемый вывод. Эта опция направляет вывод команды в пейджер:

Для печати удобочитаемых временных меток используйте опцию -T ( —ctime ):

Формат —time-format отметок времени также может быть установлен с помощью параметра, который может быть ctime, reltime, delta, notime или iso. Например, чтобы использовать дельта-формат, введите:

Вы также можете объединить два или более вариантов:

Чтобы просмотреть вывод dmesg команды в режиме реального времени, используйте параметр -w ( —follow ):

Фильтрация dmesg вывода

Вы можете ограничить dmesg вывод данными объектами и уровнями.

Средство представляет процесс, который создал сообщение. dmesg поддерживает следующие возможности журнала:

  • kern — сообщения ядра
  • user — сообщения уровня пользователя
  • mail — почтовая система
  • daemon — системные демоны
  • auth — сообщения безопасности / авторизации
  • syslog — внутренние сообщения syslogd
  • lpr — подсистема линейного принтера
  • news — подсистема сетевых новостей

Опция -f ( —facility
) позволяет ограничить вывод определенными объектами. Опция принимает одно или несколько разделенных запятыми объектов.

Например, для отображения только сообщений ядра и системных демонов вы должны использовать:

Каждое сообщение журнала связано с уровнем журнала, который показывает важность сообщения. dmesg поддерживает следующие уровни журнала:

  • emerg — система неработоспособна
  • alert — действие должно быть предпринято немедленно
  • crit — критические условия
  • err — условия ошибки
  • warn — условия предупреждения
  • notice — нормальное, но значимое состояние
  • info — информационный
  • debug — сообщения уровня отладки

Опция -l ( —level
) ограничивает вывод определенными уровнями. Опция принимает один или несколько уровней, разделенных запятыми.

Следующая команда отображает только сообщения об ошибках и критические сообщения:

Очистка кольцевого буфера

Опция -C ( —clear ) позволяет очистить кольцевой буфер:

Только root или пользователи с привилегиями sudo могут очистить буфер.

Чтобы распечатать содержимое буфера перед очисткой, используйте параметр -c ( —read-clear ):

Если вы хотите сохранить текущие dmesg журналы в файле перед его очисткой, перенаправьте вывод в файл:

Вывод

Команда dmesg позволяет вам просматривать и контролировать кольцевой буфер ядра. Это может быть очень полезно при устранении проблем с ядром или оборудованием.

Введите man dmesg в своем терминале информацию о всех доступных dmesg опциях.

Источник

Команда Dmesg в Linux

Ядро Linux — это ядро операционной системы, которое контролирует доступ к системным ресурсам, таким как ЦП, устройства ввода-вывода, физическая память и файловые системы. Ядро записывает различные сообщения в кольцевой буфер ядра во время процесса загрузки и во время работы системы. Эти сообщения содержат различную информацию о работе системы.

Кольцевой буфер ядра — это часть физической памяти, в которой хранятся сообщения журнала ядра. Он имеет фиксированный размер, что означает, что после заполнения буфера старые записи журналов перезаписываются.

Утилита командной строки dmesg используется для печати и управления кольцевым буфером ядра в Linux и других Unix-подобных операционных системах. Это полезно для изучения сообщений загрузки ядра и отладки проблем, связанных с оборудованием.

В этом руководстве мы рассмотрим основы команды dmesg .

Использование команды dmesg

Синтаксис команды dmesg следующий:

При запуске без каких-либо параметров dmesg записывает все сообщения из кольцевого буфера ядра в стандартный вывод:

По умолчанию все пользователи могут запускать команду dmesg . Однако в некоторых системах доступ к dmesg может быть ограничен для пользователей без полномочий root. В этой ситуации при вызове dmesg вы получите сообщение об ошибке, подобное приведенному ниже:

Параметр ядра kernel.dmesg_restrict указывает, могут ли непривилегированные пользователи использовать dmesg для просмотра сообщений из буфера журнала ядра. Чтобы снять ограничения, установите его на ноль:

Обычно вывод содержит много строк информации, поэтому видна только последняя часть вывода. Чтобы видеть по одной странице за раз, направьте вывод в утилиту пейджера, например, less или more :

—color=always используется для сохранения цветного вывода.

Если вы хотите фильтровать сообщения буфера, используйте grep . Например, чтобы просмотреть только сообщения, относящиеся к USB, вы должны ввести:

dmesg читает сообщения, генерируемые ядром, из виртуального файла /proc/kmsg . Этот файл предоставляет интерфейс для кольцевого буфера ядра и может быть открыт только одним процессом. Если в вашей системе запущен процесс syslog и вы пытаетесь прочитать файл с помощью cat или less , команда зависнет.

Демон syslog выгружает сообщения ядра в /var/log/dmesg , поэтому вы также можете использовать этот файл журнала:

Формирование вывода dmesg

Команда dmesg предоставляет ряд параметров, которые помогут вам отформатировать и отфильтровать вывод.

Один из наиболее часто используемых параметров dmesg — -H ( —human ), который позволяет выводить данные в удобочитаемом для человека —human . Эта опция направляет вывод команды в пейджер:

Чтобы напечатать удобочитаемые метки времени, используйте параметр -T ( —ctime ):

Формат временных меток также можно установить с помощью параметра —time-format

Источник

Буфер сообщений ядра

Буфер сообщений ядра

Сообщения ядра хранятся в кольцевом буфере (log buffer) размером LOG_BUF_LEN. Этот размер можно изменять во время компиляции с помощью параметра CONFIG_LOG_BUF_SHIFT. Для однопроцессорной машины это значение по умолчанию равно 16 Кбайт. Другими словами в ядре может хранится до 16 Кбайт системных сообщений. Если общий размер всех сообщений ядра достигает этого максимального значения и приходит новое сообщение, то оно переписывается поверх самого старого из хранящихся в буфере сообщений. Буфер сообщений ядра называется кольцевым, потому что запись и считывание сообщений выполняется по круговой схеме.

Использование кольцевого буфера предоставляет определенные преимущества. Так как одновременные операции чтения и записи в кольцевом буфере выполняются достаточно просто, то функцию printk() можно использовать даже из контекста прерывания. Более того, это позволяет просто организовать управление системными сообщениями. Если сообщений оказывается очень много, то новые сообщения просто затирают старые. Если возникает проблема, которая проявляется в генерации большого количества сообщений, то буфер сообщений просто начинает переписывать себя вместо того, чтобы бесконтрольно занимать память. Единственный недостаток кольцевого буфера — возможность потерять сообщения, что не такая уж и большая плата за ту устойчивость, которую такое решение предоставляет.

Читайте также

Уровни вывода сообщений ядра

Уровни вывода сообщений ядра Главное отличие между функциями printk() и printf() — это возможность в первой указывать уровень вывода сообщений ядра (loglevel). Ядро использует уровень вывода сообщений для принятия решения о том, выводить сообщение на консоль или нет. Ядро выводит на

Буфер обмена

Буфер обмена Буфер обмена – это специальная область оперативной памяти компьютера, в которой хранятся данные, предназначенные для перемещения или копирования как между окнами разных приложений, так и в одном и том же окне.В любой программе при выполнении команды

Приемный буфер сокета UDP

Приемный буфер сокета UDP Число дейтаграмм UDP, установленных в очередь UDP, для данного сокета ограничено размером его приемного буфера. Мы можем изменить его с помощью параметра сокета SO_RCVBUF, как мы показали в разделе 7.5. В FreeBSD по умолчанию размер приемного буфера сокета UDP

ГЛАВА 3. БУФЕР СВЕРХОПЕРАТИВНОЙ ПАМЯТИ (КЕШ)

ГЛАВА 3. БУФЕР СВЕРХОПЕРАТИВНОЙ ПАМЯТИ (КЕШ) Как уже говорилось в предыдущей главе, ядро операционной системы поддерживает файлы на внешних запоминающих устройствах большой емкости, таких как диски, и позволяет процессам сохранять новую информацию или вызывать ранее

Буфер сетевых операций

Буфер сетевых операций Буфер сетевых операций используется для хранения сетевых команд и потоков. Увеличение размера буфера может повысить скорость передачи данных. Но следует учитывать, что память для буфера сетевых операций резервируется за счет оперативной памяти,

Буфер обмена

Буфер обмена Смотрим, что у нас есть в группе Буфер обмена (рис. 1.13). Рис. 1.13. Группа Буфер обмена Кнопка с ножницами отвечает за вырезание текста (ее дублирует сочетание клавиш Ctrl+X). Выделяем часть текста (например, первый абзац). Нажимаем кнопку с ножницами или Ctrl+X –

Буфер результатов слишком мал

Буфер результатов слишком мал Когда мы рассказывали о функции door_call, мы отметили, что если буфер результатов оказывается слишком мал, библиотека дверей осуществляет автоматическое выделение нового буфера. Сейчас мы покажем это на примере. В листинге 15.4 приведен текст

Виртуальный буфер кадров

Виртуальный буфер кадров После запуска визуализации на экране появится активное по умолчанию окно Rendered Frame Window (Окно кадров визуализации), отображающее процесс вывода изображения (рис. 6.5). Рис. 6.5. Окно Rendered Frame Window (Окно кадров визуализации)Панель инструментов,

3.4. Буфер обмена

3.4. Буфер обмена При вырезании или копировании содержимое ячейки помещается в буфер обмена и становится доступным не только для работы в Word. Аналогично вы можете вставить в документ Word текст или иные данные, скопированные из другого приложения, с интернет,страницы и др.

Получение и пересылка сообщений. Создание ответных сообщений

Получение и пересылка сообщений. Создание ответных сообщений Чтобы получить новую почту, выполните команду главного меню Сервис ? Отправить/Получить ? Доставить почту либо нажмите клавишу F9. Все полученные почтовые сообщения будут помещены в папку Входящие и помечены

8.3. Виртуальный буфер кадров

8.3. Виртуальный буфер кадров После запуска визуализации на экране появится активное по умолчанию окно Rendered Frame Window (Окно кадров визуализации), отображающее процесс вывода изображения (рис. 8.5). Рис. 8.5. Окно Rendered Frame Window (Окно кадров визуализации)Панель инструментов,

Буфер обмена

Буфер обмена ChangeClipboardChain Функция ChangeClipboardChain удаляет указанное окно из цепочки просмотра буфера обмена. BOOL ChangeClipboardChain ( HWND hWndRemove , HWND hWndNewNext ); Параметры hWndRemove — дескриптор окна, которое будет удалено из цепочки. Дескриптор должен был быть передан в функцию SetClipboardViewer. hWndNewNext

Буфер обмена

Буфер обмена Просмотр буфера обмена Пример на основе простого модуля-класса, осуществляющего просмотр буфера обмена.unit ClipboardViewer;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;type TForm1 = class(tform) procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject);private FNextViewerHandle : THandle; procedure

Копирование в буфер обмена

Копирование в буфер обмена Две вспомогательных процедуры:procedure CopyButtonClick(Sender: TObject);begin If ActiveControl is TMemo then TMemo(ActiveControl).CopyToClipboard; If ActiveControl is TDBMemo then TDBMemo(ActiveControl).CopyToClipboard; If ActiveControl is TEdit then TEdit(ActiveControl).CopyToClipboard; If ActiveControl is TDBedit then TDBedit(ActiveControl).CopyToClipboard;end;procedure PasteButtonClick(Sender:

Буфер обмена и удаление

Буфер обмена и удаление Редактор титров поддерживает также операции с объектами с помощью буфера обмена Windows: копирование, вырезание и вставку. Данные операции применяются к объектам титров аналогично, как и к другим объектам, например к тексту в текстовом редакторе,

Источник

Читайте также:  Приложений для windows media player
Оцените статью