Настройка Linux Core для расположения дампа
Что такое «дамп ядра» в Linux?
Когда процесс неожиданно завершается, он часто оставляет после себя «дамп ядра» в вашей системе. Существует соответствующее сообщение, которое включено в это. Ядро служит инструментом отладки и представляет собой образ памяти, который также включает информацию об отладке. Если вы пользователь, который не хочет отлаживать программу, вы можете просто удалить ядро:Вы также можете оставить его нетронутым, так как старое ядро затирается, если когда-либо сбрасывается новое. Вы также можете деактивировать дамп ядра с помощью следующей команды:
Мы можем генерировать дампы ядра по запросу (например, через отладчик) или они могут создаваться автоматически по завершении. Ядро инициирует создание дампа ядра как следствие внезапного выхода программы. Их можно отправить какой-либо другой программе (например, systemd-coredump) для дополнительных операций.
Как это обычно бывает, существует компромисс между сбором данных для повышения стабильности и устранения неполадок и риском раскрытия конфиденциальной информации из отладочных данных.
Что мы покроем?
В этой статье мы увидим, как установить расположение дампов ядра в ОС Ubuntu 20.04. Давайте начнем сейчас.
Создание дампа ядра
Давайте сначала посмотрим, как мы можем создать дамп ядра. Для этого мы используем команду kill в Linux. Сначала найдите PID процесса, а затем отправьте сигнал уничтожения. Например, давайте запустим процесс сна, а затем завершим его с помощью его PID:
$ kill -s SIGTRAP $(pgrep sleep)
Теперь, когда вы узнали, как создать дамп ядра, вы можете использовать его в следующих разделах.
Куда они идут?
Файл дампа ядра по умолчанию называется core.pid и создается в рабочем каталоге приложения. Здесь pid — это идентификатор процесса.
С помощью инструмента ulimit вы можете получить или изменить ограничения системных ресурсов для текущей оболочки и любых оболочек, следующих за ней. Чтобы проверить или настроить предельный размер основного файла, используйте следующую команду:
Чтобы избежать разграничения или усечения основного файла, убедитесь, что ограничение глобально установлено на «неограниченно» [1]. Это можно сделать в /etc/security/limits.conf, добавив следующую строку:
* - core unlimited
Теперь просто выйдите из системы и войдите снова, чтобы ограничения были применены к вашему сеансу.
Настройка расположения дампа ядра
Команда «sysctl kernel.core_pattern» или «/proc/sys/kernel/core_pattern» обычно используется для установки места, куда помещаются дампы ядра.
Введите следующую команду, чтобы просмотреть настройки текущего шаблона ядра:
Обычно вы найдете значение по умолчанию, указанное здесь как «ядро».
Использование «/proc/sys/kernel/core_pattern» для установки местоположения основного дампа
Давайте временно перенаправим дампы ядра в новое место, скажем, /tmp/dumps/core, используя файл «/proc/sys/kernel/core_pattern» [2][3]. Теперь выполните следующие действия:
Шаг 1. Сначала создайте каталог для хранения дампов ядра:
Шаг 2. Дайте необходимые разрешения для этого каталога:
Шаг 3. Теперь временно установите путь к дампу ядра:
Опять же, глобально установите ulimit на неограниченный.
Здесь мы можем добавить некоторую другую информацию к имени файла, как показано ниже:
Каждый используемый здесь параметр может быть определен следующим образом:
%p: for process id or pid.
%t: for adding a timestamp
Шаг 4. Затем мы должны изменить файл «/etc/sysctl.conf», чтобы навсегда применить предыдущие настройки. Откройте этот файл:
Теперь добавьте в этот файл следующую строку:
Также вместо этой строки можно добавить вот это:
Это все, что нам нужно сделать. Теперь создайте дамп ядра, как указано в разделе «Создание дампа ядра». После этого мы можем проверить, сгенерирован ли наш основной файл или нет:
Использование команды «Sysctl» для установки местоположения основного дампа
Как упоминалось ранее, мы также можем использовать команду sysctl для той же цели. Давайте изменим расположение дампа ядра и формат файла ядра:
Шаг 1. Создайте новый каталог и дайте необходимые разрешения:
$ chmod a+rwx /tmp/mydumps
Шаг 2. Теперь просто запустите следующую команду:
Шаг 3. Теперь снова сгенерируйте дамп ядра, как мы делали ранее. После этого проверьте, сгенерирован ли файл ядра:
В системах Ubuntu дампы ядра часто отправляются в Apport. Для систем на основе Red Hat он может быть перенаправлен в средство автоматического создания отчетов об ошибках (ABRT). Изначально я столкнулся с проблемой настройки расположения дампа ядра, поэтому мне пришлось полностью отключить Apport в Ubuntu 20.04. Возможно, это также может быть в случае с Red Hat и другими.
Заключение
В этой статье мы увидели, как мы можем настроить расположение дампов ядра в ОС Ubuntu 20.04. Дампы ядра могут помочь вам понять, что не так, но они ужасны из-за утечки конфиденциальных данных. Дампы ядра следует отключать всякий раз, когда они не требуются, и включать их только в случае крайней необходимости. В такой ситуации убедитесь, что файлы надежно сохранены, чтобы обычные пользователи не могли получить доступ к данным. Кроме того, независимо от вашего решения, вы всегда должны тестировать свою конфигурацию, чтобы убедиться, что она работает должным образом.
Дампы ядра и конфигурации по умолчанию обрабатываются разными операционными системами по-разному. В последнее время большинство систем Linux перешли на systemd, что привело к некоторым незначительным корректировкам правил. В зависимости от того, как настроена ваша система, вам может потребоваться поиск дампов ядра.