Dmesg grep error

I am in ubuntu, when I write dmesg the error messages appear in red, how could I print in the console only those?

Direct Answer

dmesg --level=emerg,alert,crit,err

This is what most people are going to be looking for. Add or remove any from the following list of eight, ordered by severity.

   emerg - system is unusable    
   alert - action must be taken immediately
    crit - critical conditions
     err - error conditions
    warn - warning conditions   
  notice - normal but significant condition
    info - informational    
   debug - debug-level messages

Alternate Answer
I like to use grep to quickly filter dmesg output results and, bonus, you can use it at the end of many show commands. The -i means case insensitive. Reference: https://www.howtogeek.com/449335/how-to-use-the-dmesg-command-on-linux/.

dmesg | grep -i "error"

Another Option

journalctl -p 0..3

This looks at similar information a different way. Modify the severity filtering (the 0 through 3) but just use numbers 0 through 7 for the same concept as dmesg, without having to remember those keywords.

Credit: https://askubuntu.com/a/1245985/192800

The Rabbit Hole
Another way to think of this is to look at the actual log file using any method you choose, instead of working around the limitations of dmesg. This can be done broadly to any file and with limitless potential using things like regular expressions. Here is a demonstration of both approaches to show the last -n number of entries.

tail -n 20 /var/log/dmesg
dmesg | tail -n 20

Ядро Linux, как и другие программы может и выводит различные информационные сообщения и сообщения об ошибках. Все они выводятся в буфер сообщения ядра, так называемый kernel ring buffer. Основная причина существования этого буфера — надо сохранить сообщения, которые возникают во время загрузки системы пока сервис Syslog ещё не запущен и не может их собирать.

Для получения сообщений из этого буфера можно просто прочитать файл /var/log/dmesg. Однако, более удобно это можно сделать с помощью команды dmesg. В этой статье мы рассмотрим как пользоваться dmesg. Разберемся с опциями утилиты, а также приведем примеры работы с ней.

Синтаксис команды dmesg очень простой. Надо набрать имя команды и если необходимо, то опции:

$ dmesg опции

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

  • -C, —clear — очистить буфер сообщений ядра;
  • -c, —read-clear — вывести сообщения из буфера ядра, а затем очистить его;
  • -d, —show-delta — выводит время прошедшее между двумя сообщениями;
  • -f, —facility — выводить только сообщения от подсистем определенной категории;
  • -H, —human — включить вывод, удобный для человека;
  • -k, —kernel — отображать только сообщения ядра;
  • -L, —color — сделать вывод цветным, автоматически включается при использовании опции -H;
  • -l, —level — ограничить вывод указанным уровнем подробности;
  • -P, —nopager — выводить информацию обычным текстом, не добавлять постраничную навигацию;
  • -r, —raw — печатать сообщения как есть, не убирая служебные префиксы;
  • -S, —syslog — использовать Syslog для чтения сообщений от ядра, по умолчанию используется файл /dev/kmsg;
  • -T, —ctime — выводить время в удобном для человека формате;
  • -t, —notime — не выводить время поступления сообщения;
  • -u, —userspace — показывать только сообщения от программ из пространства пользователя;
  • -w, —follow — после вывода всех сообщений не завершать программу, а ждать новых;
  • -x, —decode — выводить категорию и уровень журналирования в удобном для чтения формате.

Это далеко не все опции, а только самые интересные. Если вы хотите посмотреть другие, воспользуйтесь такой командой:

man dmesg

Поддерживаемые категории журналирования:

  • kern — сообщения от ядра;
  • user — сообщения от программ пространства пользователя;
  • mail — сообщения от сервисов почты;
  • daemon — сообщения от системных служб;
  • auth — сообщения безопасности и информации об авторизации пользователей;
  • syslog — сообщения, отправляемые сервисом Syslogd;
  • lpr — сообщения от служб печати.

А вот доступные уровни журналирования:

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

Примеры использования dmesg

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

dmesg

По умолчанию перед сообщением выводится только временной сдвиг от загрузки системы. Если вы хотите полную временную метку, используйте опцию -T:

dmesg -T

Во время загрузки ядро тестирует оборудование и выводит подробную информацию о нём в буфер сообщений ядра. Таким образом, с помощью dmesg можно посмотреть информацию об оборудовании, просто отфильтруйте нужные данные, например CPU:

dmesg | grep CPU

Для того чтобы выводить только сообщения от ядра, а не всё под ряд, используйте опцию -k:

dmesg -k

Теперь в выводе утилиты не будет сообщений от Systemd. Если вы хотите выводить все сообщения ядра в реальном времени, используйте опцию -w:

dmesg -w

Для того чтобы добавить цвет к выводу и включить постраничную навигацию вместо вывода текста одним большим куском используйте опцию -H:

dmesg -H

Для того чтобы вывести категорию сообщения и его уровень логирования используйте опцию -x:

dmesg -x

Если вас интересуют только ошибки, можно отсеять их по уровню журналирования:

dmesg -l crit,err

Или только информационные сообщения:

dmesg -l warn

Можно вывести только сообщения, которые попали сюда из пространства пользователя, для этого используйте опцию -u:

dmesg -u

Или же отфильтруйте категории user и daemon с помощью опции -f:

dmesg -f user,daemon

Аналогичным образом вы можете фильтровать и другие категории. Если вы хотите очистить буфер сообщений ядра, используйте опцию -C. При следующем запуске dmesg там будет пусто:

dmesg -C

Выводы

В этой небольшой статье мы разобрали как пользоваться dmesg. Теперь вы знаете за что отвечает эта утилита, а также какие опции можно использовать.

Creative Commons License

Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

Об авторе

Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.

Forum rules
Before you post please read how to get help. Topics in this forum are automatically closed 6 months after creation.

User avatar

trytip

Level 14
Level 14
Posts: 5311
Joined: Tue Jul 05, 2016 1:20 pm

dmesg | grep -i «error|warn|fail»

any idea what all this means i run the command and just want to know if i can fix any of this ? or is this just normal. what is your dmesg | grep -i «error|warn|fail» output like

Code: Select all

dmesg | grep -i "error|warn|fail"

dmesg | grep -i «error|warn|fail»
[ 0.145046] acpi PNP0A03:00: _OSC failed (AE_NOT_FOUND); disabling ASPM
[ 11.111258] EXT4-fs (sdb2): re-mounted. Opts: errors=remount-ro
[ 12.106115] ACPI Warning: SystemIO range 0x0000000000000428-0x000000000000042F conflicts with OpRegion 0x000000000000042C-0x000000000000042D (GP2C) (20150930/utaddress-254)
[ 16.078492] init: failsafe main process (650) killed by TERM signal
[ 16.840068] nvidia: module verification failed: signature and/or required key missing — tainting kernel

Last edited by LockBot on Wed Dec 28, 2022 7:16 am, edited 1 time in total.

Reason: Topic automatically closed 6 months after creation. New replies are no longer allowed.

Image

User avatar

jimallyn

Level 19
Level 19
Posts: 9075
Joined: Thu Jun 05, 2014 7:34 pm
Location: Wenatchee, WA USA

Re: dmesg | grep -i «error|warn|fail»

Post

by jimallyn » Wed Aug 10, 2016 7:32 pm

I got even more output from that command than you did. But, everything here is working just fine. Was there some particular reason that you ran that command?

“If the government were coming for your TVs and cars, then you’d be upset. But, as it is, they’re only coming for your sons.” — Daniel Berrigan

User avatar

trytip

Level 14
Level 14
Posts: 5311
Joined: Tue Jul 05, 2016 1:20 pm

Re: dmesg | grep -i «error|warn|fail»

Post

by trytip » Fri Aug 12, 2016 2:57 am

yes everything here works fine that i’m aware of until it isn’t working which i would then be aware of as it happens

if i try to switch to compiz (mate/17.3) to use 3D windows the desktop cube is not a box any longer, sometimes a video will freeze the media player when going to ot coming out of full screen. i ran that command to see if i could identify and maybe get a fix on things.

i was hoping for an advanced linux user to maybe explain what i’m looking at when viewing my dmesg output

Image

Приветствую читателей своего сайта. Сегодня я всесторонне рассмотрю тему тему логов в Ubuntu — ошибки, загрузка, системные логи, cron и остальное. Постараюсь дать обзорную информацию по основным моментам в этой теме. Материал в основном рассчитан на новичков, но возможно восполнит пробелы и специалистов.

Традиционно логи в Linux хранятся в директории /var/log. Вот описание стандартных лог файлов Ubuntu, которые там присутствуют. Кстати, если вы только планируете устанавливать ubuntu, то можете воспользоваться моей подробной статьей на этот счет — установка ubuntu server. Так же вам может быть интересен мой обзор и сравнение сервера убунту с другими linux системами — Ubuntu Server — обзор для начинающих, сравнение, отзывы.

  1. syslog или messages. Последнего чаще всего нет и вместо него только syslog. Это традиционные глобальные системные журналы операционной системы linux. Сюда пишутся события загрузки, ядра системы, системы инициализации systemd и т.д.
  2. auth.log — лог авторизации и аутентификации в системе.
  3. dmesg — в этом логе хранится информация о загрузке ядра и драйверов оборудования.
  4. alternatives.log — лог файл программы update-alternatives. Не знаю, за какие такие заслуги ей выделили отдельный лог файл, а cron, к примеру, нет.
  5. kern.log — лог сообщений ядра ubuntu, да и любой другой linux системы.
  6. maillog — сообщения почтовой системы. Обычно postfix или exim. Если на сервере ubuntu они не установлены, то и почтового лога не будет.
  7. dpkg.log — логирование работы пакетных менеджеров ubuntu. Обычно это apt или apt-get.
  8. lastlog и wtmp — информация о прошлых авторизациях пользователей.

Лог загрузки

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

sudo dmesg

У вас получится очень длинный вывод всего того, что происходило с системой на старте. Если ищите что-то конкретное, то можете сделать фильтрацию вывода с помощью grep. Допустим, вам надо узнать информацию только о диске.

sudo dmesg | grep sda

Вы увидите лог загрузки системы ubuntu, содержащий информацию только о диске sda. Аналогичным образом можно фильтровать вывод по другим темам. Например, посмотреть все ошибки, которые были во время загрузки.

sudo dmesg | grep error

И так далее.  Информация, которую выводит команда dmesg, хранится в log файле /var/log/dmesg.

Логи авторизации, в том числе ssh

Для того, чтобы узнать, кто и когда проходил авторизацию на сервере ubuntu, можно воспользоваться логами из файла /var/log/auth.log. Авторизация по ssh там будет выглядеть следующим образом.

sshd[2774]: Accepted publickey for root from 21.17.214.129 port 2673 ssh2: RSA SHA256:MCDja9Ve7rYZCzeVGpYXpqRxfAanWwVkcd+lU3GS
sshd[2774]: pam_unix(sshd:session): session opened for user root by (uid=0)
systemd-logind[628]: New session 6 of user root.

Здесь мы видим ip адрес, с которого произошло подключение и слепок сертификата, так как аутентификация была произведена с его помощью. Если хотите повысить уровень логирования подключений по ssh и получать больше информации, то можете отредактировать конфигурационный файл sshd — /etc/ssh/sshd_config, добавив туда следующий параметр.

LogLevel VERBOSE

Не забудьте перезапустить службу sshd для принятия изменений:

sudo systemctl restart sshd

После этого логирование подключений по ssh будет более подробное.

Лог локального входа в ubuntu тоже хранится в файле auth.log. Информация о подключении через консоль выглядит следующим образом.

login[680]: pam_unix(login:session): session opened for user root by LOGIN(uid=0)
systemd-logind[628]: New session 9 of user root.
login[3094]: ROOT LOGIN on '/dev/tty1'

Устройство /dev/tty1 говорит о том, что вход локальный.

Вы можете быстро посмотреть информацию о последних входах в систему с помощью команды last. Эта информация хранится в бинарном логе /var/log/lastlog.

Примерно то же самое можно увидеть с помощью utmpdump.

sudo utmpdump /var/log/wtmp

Логи ошибок в Ubuntu

Рассмотрим теперь вопрос с расположением лога ошибок в Ubuntu. Как такового отдельного error log в традиционных linux системах нет. И Убунта тут не исключение. Ошибки придется искать по системным и программным логам выборкой ключевых слов. Обычно используют следующие фразы:

  • error или err
  • critical или crit
  • debug
  • warn

Например, посмотрим в логе загрузки dmesg все сообщения уровня предупреждений (warn).

sudo dmesg -l warn

А теперь проверим ошибки в системном логе.

sudo cat /var/log/syslog | grep error

Видим некоторые ошибки в службе systemd-resolved.

Cron logs

Часто хочется проверить лог запуска периодических заданий cron. В Ubuntu, как мне кажется, сделали не удобно. По умолчанию, cron logs не выделены в отдельный файл. Искать их стоит в общем системном логе syslog. Например, в Centos существует отдельный лог-файл /var/log/cron, где собрана вся информация о запущенных заданиях. Предлагаю сделать так же в Ubuntu.

Для этого открываем конфигурационный файл /etc/rsyslog.d/50-default.conf и добавляем туда следующую информацию.

cron.*				/var/log/cron.log

По умолчанию, она присутствует в конфиге, но закомментирована. Вам нужно убрать # в начале строки, чтобы раскомментировать ее. Так же я рекомендую сделать так, чтобы эти логи не дублировались в общий системный лог. Для этого немного измените следующую строку.

*.*;auth,authpriv.none,cron.none	-/var/log/syslog

Я добавил в нее cron.none, чтобы логи cron не писались больше в системный лог syslog. После этого перезапустите службы rsyslog и cron и проверяйте изменения.

sudo systemctl restart rsyslog
sudo systemctl restart cron

Проверяем cron.log

sudo cat /var/log/cron.log

Теперь у нас все логи Cron в Ubuntu будут в отдельном файле.

Лог действий пользователя

Мне часто задают вопросы, как посмотреть лог действий пользователя в системе или как узнать, какие программы он запускал. По умолчанию, такие действия не логируются в ubuntu. Для этого нужно устанавливать какое-то дополнительное программное обеспечение. Я даже не знаю, кто умеет это делать. Обычно если надо фиксировать действия пользователя, включается лог работы sudo.

Для того, чтобы включить логирование действий пользователя через sudo, редактируем файл /etc/sudoers. Добавляем туда строку.

Defaults logfile=/var/log/sudo.log

Теперь выполните какую-нибудь команду через sudo.

sudo cat /var/log/cron.log

Проверяем sudo.log.

Nov 25 23:10:36 : root : TTY=pts/3 ; PWD=/root ; USER=root ;
    COMMAND=/usr/bin/cat /var/log/cron.log

Выполненная команда пользователя сохранена в логе sudo.log. Теперь никто не сможет выполнить незаметно административные действия на сервере. Конечно, человек с полными правами сможет изменить любой лог файл, удалив свои действия при желании. Для этого важные логи нужно отправлять куда-то в другое место, но это уже тема отдельной статьи.

На сегодня по логам в Ubuntu у меня все. Желаю вам логов без ошибок и вечного аптайма (шутка, надо ставить обновы и перезагружаться).

Introduction

The dmesg command is a Linux utility that displays kernel-related messages retrieved from the kernel ring buffer. The ring buffer stores information about hardware, device driver initialization, and messages from kernel modules that take place during system startup.

The dmesg command is invaluable when troubleshooting hardware-related errors, warnings, and for diagnosing device failure.

In this tutorial, you will learn how to use the dmesg command in Linux.

How to use the dmesg Linux command.

Prerequisites

  • A computer system running Linux.
  • A user account with administrator privileges.

The basic dmesg command syntax is:

dmesg [options]

The table below lists the most commonly used dmesg options:

Option Description
-C, --clear Clears the ring buffer.
-c, --read-clear Prints the ring buffer contents and then clears.
-f, --facility [list] Restricts output to the specified comma-separated facility [list].
-H, --human Enables a human-readable output.
-L, --color[=auto|never|always] Adds color to the output. Omitting the [auto|never|always] arguments defaults to auto.
-l, --level [list] Restricts the output to the specified comma-separated level list.
--noescape Disables the feature of automatically escaping unprintable and potentially unsafe characters.
-S, --syslog Instructs dmesg to use the syslog kernel interface to read kernel messages. The default is to use /dev/kmsg instead of syslog.
-s, --buffer-size [size] Uses the specified buffer size to query the kernel ring buffer. The default value is 16392.
-T, --ctime Prints human-readable timestamps.
-t, --notime Instructs dmesg not to print kernel’s timestamps.
--time-format [format] Prints timestamps using the specified [format]. The accepted formats are ctime, reltime, delta, and iso (a dmesg implementation of the ISO-8601 format).
-w, --follow Keeps dmesg running and waiting for new messages. The feature is available only on systems with a readable /dev/kmsg file.
-x, --decode Decodes the facility and level numbers to human-readable prefixes.
-h, --help Displays the help file with all the available options.

Linux dmesg Command Examples

The examples are common dmesg command use cases.

Display All Messages from Kernel Ring Buffer

Invoking dmesg without any options outputs the entire kernel buffer, without stops, and with no way to navigate the output.

sudo dmesg
A partial output of the Linux dmesg command.

The example above is a partial dmesg command output. For easier navigation and better readability, pipe the dmesg output into a terminal pager such as less, more, or use grep.

For example:

sudo dmesg | less
Piping dmesg into less for easier navigation.

Piping dmesg into less allows you to use the search function to locate and highlight items. Activate search by pressing /. Navigate to the next screen using the Space bar, or reverse using the B key. Exit the output by pressing Q.

Display Colored Messages

By default, dmesg produces a colored output. If the output isn’t colored, use the -L option to colorize it.

sudo dmesg -L
Adding color to dmesg output.

To turn off colored outputs, append the --color=never option to dmesg. Run the following command:

sudo dmesg --color=never
Removing color from dmesg output.

The default dmesg output is now uniform in color.

Display Messages as They Arrive

Monitor the kernel ring buffer in real-time using the --follow option. The option instructs the command to wait for new messages related to hardware or kernel modules after system startup.

Run the following dmesg command to enable real-time kernel ring buffer monitoring:

sudo dmesg --follow

The command displays any new messages at the bottom of the terminal window. Stop the process using Ctrl+C.

Search for a Specific Term

When searching for specific issues or hardware messages, pipe the dmesg output into grep to search for a particular string or pattern.

For example, if you are looking for messages about memory, run the following command:

dmesg | grep -i memory
Searching for a specific term in the dmesg log.

The output shows all the lines from the buffer containing the memory string. The -i (ignore case) switch ignores care sensitivity.

Alternatively, if you are looking for buffer messages about USB, serial ports, network, or hard drives, run the following commands:

USB

dmesg | grep -i usb

Serial Ports

dmesg | grep -i tty

Network

dmesg | grep -i eth

Hard Drives

sudo dmesg | grep -i sda

Search for multiple terms at once by appending the -E option to grep and providing the search terms encased in quotations, separated by pipe delimiters. For example:

sudo dmesg | grep -E "memory|tty"
Searching for multiple terms in the dmesg log.

The output prints all the messages containing any of the search terms.

Read and Clear dmesg Logs

The -c (--read-clear) option lets you clear the dmesg log after printing it. Clearing the buffer ensures you have only valid messages from the latest reboot.

Note: To save the entire log in a file before clearing it, redirect the output to a file with sudo dmesg > log_file.

Run the following command:

sudo dmesg -c

Rerunning dmesg has no output since the log has been cleared.

Clearing the dmesg log.

Enable Timestamps in dmesg Logs

Enable timestamps in dmesg output by appending it with the -H (--human) option, which produces a human-readable output and automatically pipes the output into a pager (less).

Run the following command:

sudo dmesg -H
Enabling log message timestamps in the dmesg output.

The command adds a timestamp with the date and time resolved in minutes. The events in the same minute are labeled with seconds and nanoseconds.

Quit the pager by pressing Q.

Enable Human-Readable Timestamps

Enable human-readable timestamps using the -T (--ctime) option. The option removes the nanosecond accuracy from the output, but the timestamps are easier to follow.

sudo dmesg -T
Generating human-readable timestamps in the dmesg command output.

The timestamps in the output are standard dates and time, and the resolution is in minutes. The same timestamp is prepended to each action that occurred in the same minute.

Note: Unlike the -H option, the -T option doesn’t automatically invoke less.

Choose Timestamp Format

Use the --time-format [format] option to choose the timestamp format. The available formats are:

  • ctime
  • reltime
  • delta
  • notime
  • iso

For example, to use the iso format, run:

sudo dmesg --time-format=iso
Changing the format of dmesg timestamps.

The timestamp format is now YYYY-MM-DD<T>HH:MM:SS,<microseconds>←+><timezone offset from UTC>.

Note: The iso and ctime may show inaccurate time when the system is suspended and resumed.

Limit dmesg Output to a Specific Facility

Filter the dmesg output to a specific category using the -f option. The system groups messages in the kernel ring buffer into the following facilities (categories):

  • kern. Kernel messages.
  • user. User-level messages.
  • mail. Mail system messages.
  • daemon. Messages about system daemons.
  • auth. Authorization messages.
  • syslog. Internal syslogd messages.
  • lpr. Line printer subsystem messages.
  • news. Network news subsystem messages.

For example, the following command limits the output to messages related to the syslog facility:

sudo dmesg -f syslog
Showing log messages from a single facility in dmesg output.

To list messages from more than one facility, specify a comma-separated list of facilities. For example:

sudo dmesg -f syslog,daemon
Showing log messages from multiple facilities in dmesg.

Filter Log Levels

The dmesg command associates each buffer message with a log level characterizing message importance. The available levels are:

  • emerg. Emergency messages.
  • alert. Alerts requiring immediate action.
  • crit. Critical conditions.
  • err. Error messages.
  • warn. Warning messages.
  • notice. Normal but significant conditions.
  • info. Informational messages.
  • debug. Debugging-level messages.

Instruct dmesg to print only the messages matching a certain level using the -l option, followed by the level name. For example:

sudo dmesg -l info
Filtering dmesg output to print only a certain log level messages.

The example above extracts only informational messages from the log.

Combine multiple levels in a comma-separated list to retrieve messages from those levels. For example:

sudo dmesg -l notice,warn
Filtering dmesg output to print messages from multiple log levels.

The output combines messages from the specified log levels.

Combining Facility and Level

Explicitly show each buffer message’s facility and log level at the start of each line using the -x (decode) option.

For example:

sudo dmesg -x
Using the decode option in dmesg.

In the example above, each line is prepended with the appropriate facility and log level.

Read dmesg Log File

Each time the system boots up, the messages from the kernel ring buffer are stored in the /var/log/dmesg file. The dmesg command shows the log file contents. If you have issues using the dmesg command, open the log file in a text editor to view the contents.

In the example below, we use the cat command to view the log file and pipe it into grep to search for a particular string occurring in the log:

cat dmesg | grep amd
Reading the dmesg log file using the cat command.

The command outputs all amd string instances in the log file.

Check for a CD Drive

Check if a remote machine is equipped with a CD drive by inspecting the buffer message log. For example, the following command shows all messages about CD devices initialized on startup:

sudo dmesg | grep -iE 'cdrom|dvd|cd/rw|cd-rom'
Determining device types

The results display information about the available CD-ROM drives, including the virtual CD-ROM drive on this machine.

Remove sudo Requirement

Removing the requirement for superuser privileges allows any user to run dmesg and view kernel ring buffer messages. Run the following command to remove the sudo requirement:

sudo sysctl -w kernel.dmesg_restrict=0
Remove the sudo requirement

After setting the restrictions to 0, any user on the system can run dmesg.

Conclusion

This guide explained how to use the Linux dmesg command to view and control the kernel ring buffer. The utility is convenient when troubleshooting kernel or hardware issues.

For further reading, we recommend our tutorial on updating the Linux kernel in Ubuntu or checking the Kernel version in Linux.

Skip to content

Введение:

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

Методы проверки журналов ошибок в Linux Mint 20:

Для проверки журналов ошибок в системе Linux Mint 20 вы можете использовать любой из следующих двух методов:

Способ №1: Проверка журналов ошибок с помощью команды «journalctl»:

Чтобы проверить журналы ошибок в Linux Mint 20 с помощью этого метода, вам нужно будет выполнить команду, указанную ниже:

$ sudo journalctl | grep ‘error’

Журналы ошибок нашей системы Linux Mint 20, извлеченные с помощью команды «journalctl», показаны на следующем изображении:

Как проверить журналы ошибок в Linux Mint 20

Способ №2: Проверка журналов ошибок с помощью команды «dmesg»:

Чтобы проверить журналы ошибок в Linux Mint 20 с помощью этого метода, вам нужно будет выполнить команду, указанную ниже:

$ sudo dmesg | grep ‘error’

Журналы ошибок нашей системы Linux Mint 20, извлеченные с помощью команды «dmesg», показаны на следующем изображении:

Как проверить журналы ошибок в Linux Mint 20

Вывод:

С помощью двух методов, описанных в этой статье, вы сможете очень удобно проверять журналы ошибок вашей системы Linux Mint 20. После проверки этих журналов ошибок вам будет относительно легче исправить эти ошибки.


Мы используем файлы cookie на нашем веб-сайте, чтобы предоставить вам наиболее релевантный опыт, запоминая ваши предпочтения и повторные посещения. Нажимая «Принять все», вы соглашаетесь на использование ВСЕХ файлов cookie. Однако вы можете посетить «Настройки файлов cookie», чтобы предоставить контролируемое согласие.

Команда dmesg позволяет вам заглянуть в скрытый мир процессов запуска Linux. Просматривайте и отслеживайте сообщения аппаратных устройств и драйверов из собственного кольцевого буфера ядра с помощью «друга поисковика ошибок».

В Linux и Unix-подобных компьютерах загрузка и запуск — это две отдельные фазы последовательности событий, которые происходят при включении компьютера.

Процессы загрузки (BIOS или же UEFI, MBR, и GRUB) довести инициализацию системы до момента, когда ядро ​​загружается в память и подключается к начальному ramdisk (initrd или initramfs), и systemd запущен.

Затем процессы запуска принимают эстафету и завершают инициализацию операционной системы. На самых ранних этапах инициализации такие демоны ведения журнала, как syslogd или же rsyslogd еще не запущены. Чтобы избежать потери заметных сообщений об ошибках и предупреждений на этом этапе инициализации, ядро ​​содержит кольцевой буфер что он использует как хранилище сообщений.

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

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

Но не уходите с пустыми руками. Возьмите dmesg с собой.

Команда dmesg

Команда dmesg позволяет вам для просмотра сообщений, хранящихся в кольцевом буфере. По умолчанию для использования dmesg необходимо использовать sudo.

sudo dmesg

Все сообщения в кольцевом буфере отображаются в окне терминала.

Вывод из sudo dmesg в окне терминала

Это был потоп. Очевидно, что нам нужно сделать это через меньше:

sudo dmesg | less

sudo dmesg |  меньше в окне терминала

Теперь мы можем прокручивать сообщения в поисках интересующих элементов.

вывод dmesg меньше в окне терминала

Вы можете использовать функцию поиска в less, чтобы найти и выделить интересующие вас элементы и термины. Запустите функцию поиска, нажав клавишу с косой чертой «/» в less.

Устранение необходимости в sudo

Если вы не хотите использовать sudo каждый раз при использовании dmesg, вы можете использовать эту команду. Но имейте в виду: он позволяет любому, у кого есть учетная запись пользователя на вашем компьютере, использовать dmesg без необходимости использовать sudo.

sudo sysctl -w kernel.dmesg_restrict=0

sudo sysctl -w kernel.dmesg_restrict = 0 в окне терминала

Принудительный вывод цвета

По умолчанию dmesg, вероятно, будет настроен на цветной вывод. Если это не так, вы можете указать dmesg раскрасить свой вывод с помощью параметра -L (цвет).

sudo dmesg -L

sudo dmesg -L в окне терминала

Чтобы заставить dmesg всегда по умолчанию использовать цветной дисплей, используйте эту команду:

sudo dmesg --color=always

sudo dmesg --color = всегда в окне терминала

Метки времени человека

По умолчанию dmesg использует обозначение времени в секундах и наносекунды с момента запуска ядра. Чтобы отобразить это в более удобном для человека формате, используйте параметр -H (человек).

sudo dmesg -H

sudo dmesg -H в окне терминала

Это вызывает две вещи.

вывод sudo dmesg -H в окне терминала

Вывод автоматически отображается меньше.
Метки времени показывают метку времени с датой и временем с точностью до минуты. Сообщения, появляющиеся в каждую минуту, помечаются секундами и наносекундами с начала этой минуты.

Метки времени, удобочитаемые человеком

Если вам не нужна наносекундная точность, но вам нужны метки времени, которые легче читать, чем значения по умолчанию, используйте параметр -T (человекочитаемый). (Это немного сбивает с толку. -H — «человеческий» вариант, -T — «человекочитаемый» вариант.)

sudo dmesg -T

sudo dmesg -T в окне терминала

Метки времени отображаются как стандартные даты и время, но разрешение снижено до минуты.

вывод sudo dmesg -T в окне терминала

Все, что произошло в течение одной минуты, имеет одинаковую метку времени. Если вас беспокоит только последовательность событий, этого достаточно. Также обратите внимание, что вы вернетесь в командную строку. Эта опция не вызывает автоматически меньше.

Просмотр прямых трансляций

Чтобы увидеть сообщения по мере их поступления в кольцевой буфер ядра, используйте параметр –follow (ждать сообщений). Это предложение может показаться немного странным. Если кольцевой буфер используется для хранения сообщений о событиях, происходящих во время последовательности запуска, как могут живые сообщения поступать в кольцевой буфер после того, как компьютер включен и работает?

Все, что вызывает изменение оборудования, подключенного к вашему компьютеру, вызовет отправку сообщений в кольцевой буфер ядра. Обновите или добавьте модуль ядра, и вы увидите сообщения кольцевого буфера об этих изменениях. Если вы подключите USB-накопитель или подключите или отключите устройство Bluetooth, вы увидите сообщения в выводе dmesg. Даже виртуальное оборудование вызывает появление новых сообщений в кольцевом буфере. Запустите виртуальную машину, и вы увидите новую информацию, поступающую в кольцевой буфер.

sudo dmesg --follow

sudo dmesg - следовать в окне терминала

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

Вывод из sudo dmesg - следовать за окном терминала

Даже установка диска CD-ROM воспринимается как изменение, потому что вы перенесли содержимое диска CD-ROM в дерево каталогов.

сообщения кольцевого буфера dmesg в результате монтирования диска CD-ROM

Чтобы выйти из ленты в реальном времени, нажмите Ctrl + C.

Получить последние десять сообщений

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

sudo dmesg | last -10

sudo dmesg |  последний -10 в окне терминала

Последние десять сообщений извлекаются и отображаются в окне терминала.

Вывод из sudo dmsesg |  хвост -10 в окне терминала

Поиск конкретных терминов

Передайте вывод из dmesg через grep для поиска определенных строк или шаблонов. Здесь мы используем параметр -i (игнорировать регистр), чтобы не учитывать случай совпадения строк. наши результаты будут включать «usb» и «USB», а также любую другую комбинацию строчных и прописных букв.

sudo dmesg | grep -i usb

sudo dmesg |  grep -i usb в окне терминала

Выделенные результаты поиска отображаются в верхнем и нижнем регистре.

Результаты поиска, показывающие результаты в верхнем и нижнем регистре в окне терминала

Мы можем выделить сообщения, содержащие ссылки на первые SCSI жесткий диск в системе sda. (На самом деле, sda также используется в настоящее время для первый жесткий диск SATA, и для USB-накопителей.)

sudo dmesg | grep -i sda

sudo dmesg |  grep -i sda в окне терминала

Все сообщения, в которых упоминается sda, извлекаются и отображаются в окне терминала.

вывод sudo dmesg |  grep -i sda в окне терминала

Чтобы grep искать одновременно несколько терминов, используйте параметр -E (расширить регулярное выражение). Вы должны указать условия поиска внутри строки в кавычках с вертикальной чертой «|» разделители между поисковыми запросами:

sudo dmesg | grep -E "memory|tty|dma"

sudo dmesg |  grep -E

Любое сообщение, в котором упоминается какой-либо из условий поиска, отображается в окне терминала.

вывод из sudo dmesg |  grep -E

Использование уровней журнала

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

Emerg: Система непригодна для использования.
предупреждение: действие необходимо предпринять немедленно.
крит: Критические условия.
err: условия ошибки.
предупреждение: условия предупреждения.
Примечание: нормальное, но серьезное состояние.
информация: Информационная.
debug: сообщения уровня отладки.

Мы можем заставить dmesg извлекать сообщения, соответствующие определенному уровню, используя параметр -l (level) и передавая имя уровня в качестве параметра командной строки. Чтобы увидеть сообщения только «информационного» уровня, используйте эту команду:

sudo dmesg -l info

sudo dmesg -l информация в окне терминала

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

Вывод sudo dmesg -l info в окне терминала

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

sudo dmesg -l debug,notice

sudo dmesg -l debug, уведомление в окне терминала

Вывод dmesg представляет собой смесь сообщений каждого уровня журнала:

Вывод из sudo dmesg -l debug, уведомление в окне терминала

Категории объектов

Сообщения dmesg сгруппированы по категориям, называемым «удобствами». Перечень объектов:

kern: сообщения ядра.
пользователь: сообщения уровня пользователя.
mail: Почтовая система.
демон: Системные демоны.
auth: сообщения безопасности / авторизации.
syslog: внутренние сообщения syslogd.
lpr: подсистема построчного принтера.
новости: Подсистема сетевых новостей.

Мы можем попросить dmesg отфильтровать свой вывод, чтобы показывать сообщения только в определенном объекте. Для этого мы должны использовать параметр -f (средство):

sudo dmesg -f daemon

sudo dmesg -f демон в окне терминала

dmesg перечисляет все сообщения, относящиеся к демонам в окне терминала.

вывод sudo dmesg -f daemon в окне терминала

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

sudo dmesg -f syslog, daemon

sudo dmesg -f syslog, демон в окне терминала

Вывод представляет собой смесь сообщений системного журнала и журнала демона.

вывод из sudo dmesg -f syslog, демон в окне терминала

Объединение помещения и уровня

Параметр -x (декодировать) заставляет dmesg отображать средство и уровень в виде удобочитаемых префиксов для каждой строки.

sudo dmesg -x

sudo dmesg -x в окне терминала

Объект и уровень можно увидеть в начале каждой строки:

Вывод sudo dmesg -x в окне терминала

Первый выделенный раздел — это сообщение от средства «ядра» с уровнем «уведомление». Второй выделенный раздел — это сообщение от средства «ядра» с уровнем «информация».

Это здорово, но почему?

Одним словом, поиск неисправностей.

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

Используйте dmesg для просмотра сообщений от самого высокого уровня до каждого более низкого уровня, ища любые ошибки или предупреждения, которые упоминают аппаратный элемент или могут иметь отношение к проблеме.
Используйте dmesg для поиска любых упоминаний о соответствующих средствах, чтобы узнать, содержат ли они какую-либо полезную информацию.
Пропустите dmesg через grep и найдите связанные строки или идентификаторы, такие как производитель продукта или номера модели.
Передайте dmesg через grep и найдите общие термины, такие как «gpu» или «хранилище», или такие термины, как «сбой», «сбой» или «невозможно».
Используйте опцию –follow и смотрите сообщения dmesg в режиме реального времени.

Хорошей охоты.

The ‘dmesg‘ command displays the messages from the kernel ring buffer. A system passes multiple runlevel from where we can get lot of information like system architecture, cpu, attached device, RAM etc. When computer boots up, a kernel (core of an operating system) is loaded into memory. During that period number of messages are being displayed where we can see hardware devices detected by kernel.

Read Also: 10 Linux Commands to Collect System and Hardware Information

dmesg Command Examples

dmesg Command Examples

The messages are very important in terms of diagnosing purpose in case of device failure. When we connect or disconnect hardware device on the system, with the help of dmesg command we come to know detected or disconnected information on the fly. The dmesg command is available on most Linux and Unix based Operating System.

Let’s throw some light on most famous tool called ‘dmesg’ command with their practical examples as discussed below. The exact syntax of dmesg as follows.

# dmseg [options...]

1. List all loaded Drivers in Kernel

We can use text-manipulation tools i.e. ‘more‘, ‘tail‘, ‘less‘ or ‘grep‘ with dmesg command. As output of dmesg log won’t fit on a single page, using dmesg with pipe more or less command will display logs in a single page.

[[email protected] ~]# dmesg | more
[[email protected] ~]# dmesg | less
Sample Output
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 3.11.0-13-generic ([email protected]) (gcc version 4.8.1 (Ubuntu/Linaro 4.8.1-10ubuntu8) ) #20-Ubuntu SMP Wed Oct 23 17:26:33 UTC 2013 
(Ubuntu 3.11.0-13.20-generic 3.11.6)
[    0.000000] KERNEL supported cpus:
[    0.000000]   Intel GenuineIntel
[    0.000000]   AMD AuthenticAMD
[    0.000000]   NSC Geode by NSC
[    0.000000]   Cyrix CyrixInstead
[    0.000000]   Centaur CentaurHauls
[    0.000000]   Transmeta GenuineTMx86
[    0.000000]   Transmeta TransmetaCPU
[    0.000000]   UMC UMC UMC UMC
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable
[    0.000000] BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000007dc08bff] usable
[    0.000000] BIOS-e820: [mem 0x000000007dc08c00-0x000000007dc5cbff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x000000007dc5cc00-0x000000007dc5ebff] ACPI data
[    0.000000] BIOS-e820: [mem 0x000000007dc5ec00-0x000000007fffffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000e0000000-0x00000000efffffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fec00000-0x00000000fed003ff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed20000-0x00000000fed9ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fee00000-0x00000000feefffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000ffb00000-0x00000000ffffffff] reserved
[    0.000000] NX (Execute Disable) protection: active
.....

Read Also: Manage Linux Files Effectively using commands head, tail and cat

2. List all Detected Devices

To discover which hard disks has been detected by kernel, you can search for the keyword “sda” along with “grep” like shown below.

[[email protected] ~]# dmesg | grep sda

[    1.280971] sd 2:0:0:0: [sda] 488281250 512-byte logical blocks: (250 GB/232 GiB)
[    1.281014] sd 2:0:0:0: [sda] Write Protect is off
[    1.281016] sd 2:0:0:0: [sda] Mode Sense: 00 3a 00 00
[    1.281039] sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    1.359585]  sda: sda1 sda2 < sda5 sda6 sda7 sda8 >
[    1.360052] sd 2:0:0:0: [sda] Attached SCSI disk
[    2.347887] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null)
[   22.928440] Adding 3905532k swap on /dev/sda6.  Priority:-1 extents:1 across:3905532k FS
[   23.950543] EXT4-fs (sda1): re-mounted. Opts: errors=remount-ro
[   24.134016] EXT4-fs (sda5): mounted filesystem with ordered data mode. Opts: (null)
[   24.330762] EXT4-fs (sda7): mounted filesystem with ordered data mode. Opts: (null)
[   24.561015] EXT4-fs (sda8): mounted filesystem with ordered data mode. Opts: (null)

NOTE: The ‘sda’ first SATA hard drive, ‘sdb’ is the second SATA hard drive and so on. Search with ‘hda’ or ‘hdb’ in the case of IDE hard drive.

3. Print Only First 20 Lines of Output

The ‘head’ along with dmesg will show starting lines i.e. ‘dmesg | head -20’ will print only 20 lines from the starting point.

[[email protected] ~]# dmesg | head  -20

[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 3.11.0-13-generic ([email protected]) (gcc version 4.8.1 (Ubuntu/Linaro 4.8.1-10ubuntu8) ) #20-Ubuntu SMP Wed Oct 23 17:26:33 UTC 2013 (Ubuntu 3.11.0-13.20-generic 3.11.6)
[    0.000000] KERNEL supported cpus:
[    0.000000]   Intel GenuineIntel
[    0.000000]   AMD AuthenticAMD
[    0.000000]   NSC Geode by NSC
[    0.000000]   Cyrix CyrixInstead
[    0.000000]   Centaur CentaurHauls
[    0.000000]   Transmeta GenuineTMx86
[    0.000000]   Transmeta TransmetaCPU
[    0.000000]   UMC UMC UMC UMC
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable
[    0.000000] BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000007dc08bff] usable
[    0.000000] BIOS-e820: [mem 0x000000007dc08c00-0x000000007dc5cbff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x000000007dc5cc00-0x000000007dc5ebff] ACPI data
[    0.000000] BIOS-e820: [mem 0x000000007dc5ec00-0x000000007fffffff] reserved

4. Print Only Last 20 Lines of Output

The ‘tail’ along with dmesg command will print only 20 last lines, this is useful in case we insert removable device.

[[email protected] ~]# dmesg | tail -20

parport0: PC-style at 0x378, irq 7 [PCSPP,TRISTATE]
ppdev: user-space parallel port driver
EXT4-fs (sda1): mounted filesystem with ordered data mode
Adding 2097144k swap on /dev/sda2.  Priority:-1 extents:1 across:2097144k
readahead-disable-service: delaying service auditd
ip_tables: (C) 2000-2006 Netfilter Core Team
nf_conntrack version 0.5.0 (16384 buckets, 65536 max)
NET: Registered protocol family 10
lo: Disabled Privacy Extensions
e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
Slow work thread pool: Starting up
Slow work thread pool: Ready
FS-Cache: Loaded
CacheFiles: Loaded
CacheFiles: Security denies permission to nominate security context: error -95
eth0: no IPv6 routers present
type=1305 audit(1398268784.593:18630): audit_enabled=0 old=1 auid=4294967295 ses=4294967295 res=1
readahead-collector: starting delayed service auditd
readahead-collector: sorting
readahead-collector: finished

5. Search Detected Device or Particular String

It’s difficult to search particular string due to length of dmesg output. So, filter the lines with are having string like ‘usb‘ ‘dma‘ ‘tty‘ and ‘memory‘ etc. The ‘-i’ option instruct to grep command to ignore the case (upper or lower case letters).

[[email protected] log]# dmesg | grep -i usb
[[email protected] log]# dmesg | grep -i dma
[[email protected] log]# dmesg | grep -i tty
[[email protected] log]# dmesg | grep -i memory
Sample Output
[    0.000000] Scanning 1 areas for low memory corruption
[    0.000000] initial memory mapped: [mem 0x00000000-0x01ffffff]
[    0.000000] Base memory trampoline at [c009b000] 9b000 size 16384
[    0.000000] init_memory_mapping: [mem 0x00000000-0x000fffff]
[    0.000000] init_memory_mapping: [mem 0x37800000-0x379fffff]
[    0.000000] init_memory_mapping: [mem 0x34000000-0x377fffff]
[    0.000000] init_memory_mapping: [mem 0x00100000-0x33ffffff]
[    0.000000] init_memory_mapping: [mem 0x37a00000-0x37bfdfff]
[    0.000000] Early memory node ranges
[    0.000000] PM: Registered nosave memory: [mem 0x0009f000-0x000effff]
[    0.000000] PM: Registered nosave memory: [mem 0x000f0000-0x000fffff]
[    0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups
[    0.000000] Memory: 2003288K/2059928K available (6352K kernel code, 607K rwdata, 2640K rodata, 880K init, 908K bss, 56640K reserved, 1146920K highmem)
[    0.000000] virtual kernel memory layout:
[    0.004291] Initializing cgroup subsys memory
[    0.004609] Freeing SMP alternatives memory: 28K (c1a3e000 - c1a45000)
[    0.899622] Freeing initrd memory: 23616K (f51d0000 - f68e0000)
[    0.899813] Scanning for low memory corruption every 60 seconds
[    0.946323] agpgart-intel 0000:00:00.0: detected 32768K stolen memory
[    1.360318] Freeing unused kernel memory: 880K (c1962000 - c1a3e000)
[    1.429066] [drm] Memory usable by graphics device = 2048M

6. Clear dmesg Buffer Logs

Yes, we can clear dmesg logs if required with below command. It will clear dmesg ring buffer message logs till you executed the command below. Still you can view logs stored in ‘/var/log/dmesg‘ files. If you connect any device will generate dmesg output.

[[email protected] log]# dmesg -c

7. Monitoring dmesg in Real Time

Some distro allows command ‘tail -f /var/log/dmesg’ as well for real time dmesg monitoring.

[[email protected] log]# watch "dmesg | tail -20"

Conclusion: The dmesg command is useful as dmesg records all the system changes done or occur in real time. As always you can man dmesg to get more information.

If You Appreciate What We Do Here On TecMint, You Should Consider:

TecMint is the fastest growing and most trusted community site for any kind of Linux Articles, Guides and Books on the web. Millions of people visit TecMint! to search or browse the thousands of published articles available FREELY to all.

If you like what you are reading, please consider buying us a coffee ( or 2 ) as a token of appreciation.

Support Us

We are thankful for your never ending support.

Понравилась статья? Поделить с друзьями:
  • Dmc steam must be running to play this game как исправить
  • Dmc devil may cry ошибка при запуске приложения 0xc0000906
  • Dmc 5 неустранимая ошибка приложения графический процессор не будет отвечать на дальнейшие команды
  • Dmc 5 неустранимая ошибка приложения 0x80070057
  • Dmc 5 как изменить сложность