Что такое «дамп ядра» в 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, что привело к некоторым незначительным корректировкам правил. В зависимости от того, как настроена ваша система, вам может потребоваться поиск дампов ядра.