В настоящее время я включал дампы ядра путем редактирования /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
, но не отключая по левую сторону судна.
Я нашел лучший способ сделать это как внесение изменений в по левую сторону судна средства, которые каждый раз мы обновляем по левую сторону судна, мы должны будем добавить в наших изменениях.
Linux позволяет Вам предоставлять сценарий оболочки как программу для выполнения каждый раз, когда ядро сгенерировано. В этом базовом файле можно звонить по левую сторону судна как всегда и затем сделать пользовательский материал. Это включает изменение названия и местоположения базового файла.
Для нахождения пути ядра сгенерированным по левую сторону судна можно использовать следующее
core_dir=realpath '/proc/$1/cwd'
Ответ поздно на 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
Затем из сценария удара я мог изменить местоположение дампа ядра и соглашение о присвоении имен.
Можно отредактировать по левую сторону судна файл 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
выше которых передач исполняемое имя к по левую сторону судна сценарию
Не забудьте перезапускать по левую сторону судна сервис после внесения изменения в сценарии