Настройка Linux Core для расположения дампа

Nastrojka Linux Core Dla Raspolozenia Dampa



Что такое «дамп ядра» в Linux?

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

$ г.м. основной

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







$ снижаться 0

Мы можем генерировать дампы ядра по запросу (например, через отладчик) или они могут создаваться автоматически по завершении. Ядро инициирует создание дампа ядра как следствие внезапного выхода программы. Их можно отправить какой-либо другой программе (например, systemd-coredump) для дополнительных операций.



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



Что мы покроем?

В этой статье мы увидим, как установить расположение дампов ядра в ОС Ubuntu 20.04. Давайте начнем сейчас.





Создание дампа ядра

Давайте сначала посмотрим, как мы можем создать дамп ядра. Для этого мы используем команду kill в Linux. Сначала найдите PID процесса, а затем отправьте сигнал уничтожения. Например, давайте запустим процесс сна, а затем завершим его с помощью его PID:

$ спать 500

$ убийство ПОДПИСКА $ ( схватить спать )



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

Куда они идут?

Файл дампа ядра по умолчанию называется core.pid и создается в рабочем каталоге приложения. Здесь pid — это идентификатор процесса.

С помощью инструмента ulimit вы можете получить или изменить ограничения системных ресурсов для текущей оболочки и любых оболочек, следующих за ней. Чтобы проверить или настроить предельный размер основного файла, используйте следующую команду:

$ снижаться

Чтобы избежать разграничения или усечения основного файла, убедитесь, что ограничение глобально установлено на «неограниченно» [1]. Это можно сделать в /etc/security/limits.conf, добавив следующую строку:

корень - ядро ​​неограниченно

* - ядро ​​неограниченно

Теперь просто выйдите из системы и войдите снова, чтобы ограничения были применены к вашему сеансу.

Настройка расположения дампа памяти

Команда «sysctl kernel.core_pattern» или «/proc/sys/kernel/core_pattern» обычно используется для установки места, куда попадают дампы ядра.

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

$ кошка / процесс / система / ядро / core_pattern

Обычно вы найдете значение по умолчанию, указанное здесь как «ядро».

Использование «/proc/sys/kernel/core_pattern» для установки местоположения дампа ядра

Давайте временно перенаправим дампы ядра в новое место, скажем, /tmp/dumps/core, используя файл «/proc/sys/kernel/core_pattern» [2][3]. Теперь выполните следующие действия:

Шаг 1 . Сначала создайте каталог для хранения дампов ядра:

$ мкдир -п / температура / свалка / ядра /

Шаг 2 . Дайте необходимые разрешения для этого каталога:

$ chmod а+х / температура / свалка / ядра /

Шаг 3 . Теперь временно установите путь к дампу ядра:

$ эхо '/tmp/дамп/ядра/ядро' | судо тройник / процесс / система / ядро / core_pattern

Опять же, глобально установите ulimit на неограниченный.

Здесь мы можем добавить некоторую другую информацию к имени файла, как показано ниже:

$ эхо '/tmp/dump/cores/core_%e.%p_%t' | судо тройник / процесс / система / ядро / core_pattern

Каждый используемый здесь параметр может быть определен следующим образом:

% и: за исполняемый файл название

% п: за процесс я бы или пид.

% т: за добавление временной метки

Шаг 4 . Затем мы должны изменить файл «/etc/sysctl.conf», чтобы навсегда применить предыдущие настройки. Откройте этот файл:

$ судо нано / так далее / sysctl.conf

Теперь добавьте в этот файл следующую строку:

ядро.core_pattern = / температура / свалка / ядра / основной

Также вместо этой строки можно добавить вот это:

ядро.core_pattern= '/tmp/dump/cores/core_%e.%p_%t'

Это все, что нам нужно сделать. Теперь создайте дамп ядра, как указано в разделе «Создание дампа ядра». После этого мы можем проверить, сгенерирован ли наш основной файл или нет:

$ лс / температура / свалка / ядра /

Использование команды «Sysctl» для установки местоположения основного дампа

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

Шаг 1 . Создайте новый каталог и дайте необходимые разрешения:

$ мкдир -п / температура / мои дампы

$ chmod а+rwx / температура / мои дампы

Шаг 2 . Теперь просто запустите следующую команду:

$ судо sysctl ядро.core_pattern= / температура / мои дампы / основной_ % и. % п_ % т

Шаг 3 . Теперь снова создайте дамп ядра, как мы делали ранее. После этого проверьте, сгенерирован ли файл ядра или нет:

$ лс / температура / мои дампы /

В системах Ubuntu дампы ядра часто отправляются в Apport. Для систем на основе Red Hat он может быть перенаправлен в средство автоматического создания отчетов об ошибках (ABRT). Изначально я столкнулся с проблемой настройки расположения дампа ядра, поэтому мне пришлось полностью отключить Apport в Ubuntu 20.04. Возможно, это также может быть в случае с Red Hat и другими.

Заключение

В этой статье мы увидели, как мы можем настроить расположение дампов ядра в ОС Ubuntu 20.04. Дампы ядра могут помочь вам понять, что не так, но они ужасны из-за утечки конфиденциальных данных. Дампы ядра следует отключать всякий раз, когда они не требуются, и включать их только в случае крайней необходимости. В такой ситуации убедитесь, что файлы надежно сохранены, чтобы обычные пользователи не могли получить доступ к данным. Кроме того, независимо от вашего решения, вы всегда должны тестировать свою конфигурацию, чтобы убедиться, что она работает должным образом.

Дампы ядра и конфигурации по умолчанию обрабатываются разными операционными системами по-разному. В последнее время большинство систем Linux перешли на systemd, что привело к некоторым незначительным корректировкам правил. В зависимости от того, как настроена ваша система, вам может потребоваться поиск дампов ядра.