Я не могу найти способ настроить мое событие abrt для копирования coredump в другое место. Причина, по которой я хочу сделать это, состоит в том, чтобы не допустить удаления abrt моих coredumps, если каталог сбоя превышает MaxCrashReportsSize
, При условии, что у меня нет контроля над настройкой abrt, я хотел бы экспортировать coredump в каталог поддержки, как только он будет создан.
EVENT=post-create pkg_name=raptorio analyzer=CCpp
test -f coredump && { mkdir -p /opt/raptorio/cores; cp -f coredump /opt/raptorio/cores/$(basename `cat executable`).core; }
Это событие сохранит один coredump для каждого двоичного файла C / C ++ из моего RPM-пакета raptorio. Когда моя программа падает, abrt печатает следующие ошибки в системном журнале:
Aug 30 08:28:41 abrtd: mkdir: cannot create directory `/opt/raptorio/cores': Permission denied
Aug 30 08:28:41 abrtd: cp: cannot create regular file `/opt/raptorio/cores/raptord.core': No such file or directory
Aug 30 08:28:41 abrtd: 'post-create' on '/var/spool/abrt/ccpp-2016-08-30-08:28:10-31213' exited with 1
Я вижу, что событие abrt работает как root:root
но его как-то посадили в тюрьму, возможно из-за SELinux? Я использую ABRT 2.0.8 на Centos 6.
/ opt не подходящее место для хранения временных файлов. ядра должны быть в / var / raptorio / cores, возможно. Увидеть Стандарт иерархии файловой системы
Предполагая, что ваша программа запускается как пользователь nobody, убедитесь, что никто не имеет прав на запись в этот каталог, и у вас все должно быть в порядке.
Других решений пока нет …