Файл Core Dump не может быть найден в системе Linux

В Linux и Solaris вы также можете использовать «обратную ссылку» на исходный файл. «Рефссылка» — это копия файла, в которой изначально копируются только метаданные. Любые изменения в копии не распространяются обратно на исходный файл. Точно так же любые изменения в исходном файле не отражаются в копии. Рефлинки требуют, чтобы базовая файловая система поддерживала семантику записи копирования -на -.

Рефлинки поддерживаются в Linux файловыми системами BTRFS и XFS (Для XFS требуется ядро ​​версии 4.8 или выше). Рефлинки можно создавать в Linux с помощью командыcp --reflink...или функцийioctl(..., FI_CLONE,...)или ioctl(..., FI_CLONERANGE,...).

Solaris 11.4 поддерживает ссылки на ZFS, где ссылки можно создать с помощью командыcp -z...или функции reflink().

1
13.04.2021, 05:08
1 ответ
$ ulimit -c
unlimited

Это хорошо. Если у вас нет проблем с разрешениями, ваш основной файл будет сгенерирован без ограничений по размеру. Если эта команда не отображает unlimited, вы можете изменить значение с помощью ulimit -c unlimited.

$ cat /proc/sys/kernel/core_pattern
|/usr/share/apport/apport %p %s %c %d %P %E

Если вам нужен основной файл на вашем диске, это не то, что вам нужно, так как этот параметр перенаправляет основной файл в apportпрограмму (, которая не установлена ​​).

Вы можете изменить это вручную, но у вас должны быть права администратора. Либо войдите в систему как root и измените основной файл шаблона _на

echo /tmp/cores/core.%e.%p.%h.%t > /proc/sys/kernel/core_pattern

... или используйтеsudo:

echo /tmp/core.%e.%p.%h.%t | sudo dd of=/proc/sys/kernel/core_pattern

Лучше всего использоватьsysctl:

sudo sysctl -w kernel.core_pattern=/tmp/cores/core.%e.%p.%h.%t

Обычно это изменение можно сделать постоянным, отредактировав /etc/sysctl.confсоответствующим образом.

Примечание. :Я вижу, вы получили Read-only file systemпри попытке изменить содержимое файла. Кажется, ваша proc FS смонтирована только для чтения -, и вы ДОЛЖНЫ перемонтировать ее с разрешением на чтение -для записи перед изменением любого содержимого в/proc:

sudo mount -o remount,rw /proc

Вот именно. Теперь ваш основной файл будет сгенерирован в /tmp, как вы и просили. Вы можете проверить это следующим образом (с помощью Bash):

$ sleep 3 & kill -SEGV $!
[1] 4604
[1]+  Segmentation fault      sleep 3

$ ls /tmp/core*

Дополнительная информация о файлах ядра с помощьюman 5 core.

3
28.04.2021, 22:53

Теги

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