Назад | Перейти на главную страницу

kill SIGABRT не создает файл ядра из демона, запущенного из crontab

Я запускаю CentOS 5.5 и работаю над серверным приложением, которое иногда мне нужно принудительно создать дамп ядра, чтобы я мог видеть, что происходит. Если я запускаю свой сервер из оболочки и отправляю kill SIGABRT, создается файл ядра. Если я запускаю ту же программу из crontab, а затем отправляю ей тот же сигнал, сервер «убит», но файл ядра не создается. Кто-нибудь знает, почему это так и что нужно добавить в мой код или изменить в настройках системы, чтобы разрешить создание файла ядра?

Просто примечание стороны
У меня установлен неограниченный ulimit в / etc / profile

Я установил

в /etc/sysctl.conf

Кроме того, мое серверное приложение было добавлено в crontab под тем же идентификатором входа, что и я запускаю его из оболочки.

Любая помощь очень ценится

Текущий рабочий каталог для задания cron может отличаться от ожидаемого. Попробуйте сделать cd /some/writeable/dir && yourdaemon в записи в crontab. Кроме того, вы обычно должны запускать демонов с помощью init или Upstart или аналогичных. Видеть Управление процессом.

Из man 5 core:

Существуют различные обстоятельства, при которых файл дампа ядра не создается:

  • У процесса нет разрешения на запись в основной файл. (По умолчанию основной файл называется core и создается в текущем рабочем каталоге. Подробные сведения об именовании см. Ниже.) Запись основного файла завершится неудачно, если каталог, в котором он должен быть создан, недоступен для записи или если файл с таким же именем существует и недоступен для записи или не является обычным файлом (например, это каталог или символическая ссылка).

  • (Доступный для записи, обычный) файл с тем же именем, которое будет использоваться для дампа ядра, уже существует, но существует более одной жесткой ссылки на этот файл.

  • Файловая система, в которой будет создан файл дампа ядра, заполнена; или закончились inodes; или установлен только для чтения; или пользователь достиг своей квоты для файловой системы.

  • Каталог, в котором должен быть создан файл дампа ядра, не существует.

  • Пределы ресурсов RLIMIT_CORE (размер файла ядра) или RLIMIT_FSIZE (размер файла) для процесса установлены равными нулю; см. getrlimit (2) и документацию по команде оболочки ulimit (limit в csh (1)).

  • Для двоичного файла, выполняемого процессом, не разрешено чтение.

  • Процесс выполняет программу set-user-ID (set-group-ID), которая принадлежит пользователю (группе), отличному от реального идентификатора пользователя (группы) процесса. (Однако см. Описание операции prctl (2) PR_SET_DUMPABLE и описание файла / proc / sys / fs / suid_dumpable в proc (5).)