«coredumpctl» не может прочитать дамп ядра, выдает сообщение «Файл не может быть прочитан» или «Такого файла или каталога нет»?

«coredumpctl» не может прочитать дамп ядра, выдает сообщение «Файл не может быть прочитан» или «Такого файла или каталога нет»?

Я даю следующие команды:

coredumpctl list
Mon 2019-11-18 23:58:19 GMT   19043  1000  1000  31 missing   /opt/google/chrome/chrome
Mon 2019-11-18 23:58:19 GMT   19062  1000  1000  31 missing   /opt/google/chrome/chrome
Tue 2019-11-19 15:52:55 GMT   22332  1000  1000   6 missing   /usr/bin/texstudio

С последующим:

coredumpctl gdb 22332
Storage: /var/lib/systemd/coredump/core.texstudio.1000.bb1cfb6b67f2423fac681d721ee1ba02.22332.1574178774000000.lz4 (inaccessible)
File "/var/lib/systemd/coredump/core.texstudio.1000.bb1cfb6b67f2423fac681d721ee1ba02.22332.1574178774000000.lz4" is not readable: No such file or directory

Что выводит трассировку стека и выводит два приведенных выше сообщения о недоступности хранилища и о том, что файл не может быть прочитан или найден.

Я делаю что-то неправильно?

решение1

Есть две распространённые вещи, в которых вы можете ошибаться.

Часто дамп ядра "недоступен", поскольку программа была запущена под другим идентификатором пользователя, отличным от вашего. Это означает, что у вас нет разрешения. Быстрое решение — запустить coredumpctlкак root, например, с помощью sudo coredumpctl.

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

Во-вторых,systemd-coredumpимеет некоторые настройки вcoredump.conf, о том, сколько дискового пространства разрешено использовать. Похоже, если у вас менее 15% свободного дискового пространства, дампы ядра вообще не будут создаваться. (Если вы не измените эту настройку).

Проверить доступное место на диске можно с помощью команды df -hили df -h /var/lib/systemd/coredump/.

(А чтобы увидеть общий абсолютный размер, используемый дампами ядра, вы можете запустить du -sh /var/lib/systemd/coredump/.)

MaxUse=, KeepFree=

Принудительно устанавливать ограничения на дисковое пространство, занимаемое внешними дампами ядра. MaxUse= гарантирует, что старые дампы ядра будут удалены, как только общее дисковое пространство, занимаемое дампами ядра, превысит этот предел (по умолчанию 10% от общего размера диска). KeepFree= контролирует, сколько дискового пространства должно оставаться свободным (по умолчанию 15% от общего размера диска). Обратите внимание, что дисковое пространство, используемое дампами ядра, может временно превышать эти пределы во время обработки дампов ядра. Обратите внимание, что старые дампы ядра также удаляются с течением времени с помощью systemd-tmpfiles(8). Установите любое из значений на 0, чтобы отключить очистку на основе размера.

решение2

Обратите внимание, что на каждом из дампов coredumpctl listнаписано , а последнее сообщение об ошибке было .missingNo such file or directory

Я предполагаю, что в вашем дистрибутиве есть регулярное задание cron/таймер systemd, который очищает старые дампы ядра (еженедельно, может быть?). Он очистил реальные файлы дампов ядра, и coredumpctlосталась только небольшая запись в журнале, сообщающая о том, что такой дамп существовал.

Связанный контент