![«coredumpctl» не может прочитать дамп ядра, выдает сообщение «Файл не может быть прочитан» или «Такого файла или каталога нет»?](https://rvso.com/image/164712/%C2%ABcoredumpctl%C2%BB%20%D0%BD%D0%B5%20%D0%BC%D0%BE%D0%B6%D0%B5%D1%82%20%D0%BF%D1%80%D0%BE%D1%87%D0%B8%D1%82%D0%B0%D1%82%D1%8C%20%D0%B4%D0%B0%D0%BC%D0%BF%20%D1%8F%D0%B4%D1%80%D0%B0%2C%20%D0%B2%D1%8B%D0%B4%D0%B0%D0%B5%D1%82%20%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5%20%C2%AB%D0%A4%D0%B0%D0%B9%D0%BB%20%D0%BD%D0%B5%20%D0%BC%D0%BE%D0%B6%D0%B5%D1%82%20%D0%B1%D1%8B%D1%82%D1%8C%20%D0%BF%D1%80%D0%BE%D1%87%D0%B8%D1%82%D0%B0%D0%BD%C2%BB%20%D0%B8%D0%BB%D0%B8%20%C2%AB%D0%A2%D0%B0%D0%BA%D0%BE%D0%B3%D0%BE%20%D1%84%D0%B0%D0%B9%D0%BB%D0%B0%20%D0%B8%D0%BB%D0%B8%20%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3%D0%B0%20%D0%BD%D0%B5%D1%82%C2%BB%3F.png)
Я даю следующие команды:
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
написано , а последнее сообщение об ошибке было .missing
No such file or directory
Я предполагаю, что в вашем дистрибутиве есть регулярное задание cron/таймер systemd, который очищает старые дампы ядра (еженедельно, может быть?). Он очистил реальные файлы дампов ядра, и coredumpctl
осталась только небольшая запись в журнале, сообщающая о том, что такой дамп существовал.