Как отредактировать шаблон дампа ядра, не отключая по левую сторону судна?

В настоящее время я включал дампы ядра путем редактирования /etc/limits.conf и addig * soft core unlimited а также использование ulimit -c unlimited.

Но core_pattern - это:

kernel.core_pattern = |/usr/share/apport/apport %p %s %c %P

Таким образом, ядро передается к по левую сторону судна. Я не возражаю, и я не хочу смешивать с по левую сторону судна (у меня есть память чего-то идущего не так, как надо однажды при выполнении так), кроме того, по левую сторону судна приятно генерирует a core файл в каталоге моего двоичного файла, когда это отказывает.

Есть ли любой способ отредактировать местоположение, где по левую сторону судна сохраняет ядро или его имя файла (вместо простого core)? Подобный тому, что я мог сделать путем отключения по левую сторону судна и редактирования core_pattern, но не отключая по левую сторону судна.

7
задан 7 July 2018 в 06:11

3 ответа

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

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

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

core_dir=realpath '/proc/$1/cwd'
1
ответ дан 23 November 2019 в 06:40

Ответ поздно на OP, но возможно это поможет кому-то еще.

я пытался сделать что-то подобное, включить дампы ядра на запуске с помощью systemd сервиса (в случае, если настройки были изменены другим разработчиком/развертыванием).

я также застрял с по левую сторону судна перезаписью core_pattern:

kernel.core_pattern = |/usr/share/apport/apport %p %s %c %P

, Так как я не хотел отключать по левую сторону судна, я смог обойти по левую сторону судна путь, просто инициировав мой сервис после по левую сторону судна:

[Unit]
Description=Enable Core Dumps
After=apport

[Service]
ExecStart=/usr/bin/enable_core_dump.sh

[Install]
WantedBy=multi-user.target

Затем из сценария удара я мог изменить местоположение дампа ядра и соглашение о присвоении имен.

2
ответ дан 23 November 2019 в 06:40

Можно отредактировать по левую сторону судна файл Python, чтобы сделать это. Изменение местоположения ядра является прямым: вместо

core_path = os.path.join(cwd, 'core') 

можно поместить

core_path = os.path.join('my_custom_path, 'core)

имя может также измениться подобным образом т.е. от:

core_path += '.' + str(pid)

кому:

core_path += '.' + str(my_custom_name) + '.' + str(pid)

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

|/usr/share/apport/apport %p %s %c %d %P %e

Заметьте %e выше которых передач исполняемое имя к по левую сторону судна сценарию

Не забудьте перезапускать по левую сторону судна сервис после внесения изменения в сценарии

3
ответ дан 23 November 2019 в 06:40

Другие вопросы по тегам:

Похожие вопросы: