понедельник, 25 февраля 2013 г.

Сохранение всех core файлов в одном месте

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

Создаю отдельный том (чтобы избежать переполнения файловой системы)

$ sudo lvcreate -n cores -L 2G VolGroup00
$ sudo mkfs -t ext3 /dev/VolGroup00/cores
$ sudo mkdir -p /var/local/cores
$ echo '/dev/VolGroup0/cores  /var/local/cores  ext3  defaults,nosuid,nodev   0   2' | sudo tee -a /etc/fstab
$ sudo mount /var/local/cores

Теперь нужно указать ядру сохранять core файлы в новую директорию

$ echo 'kernel.core_pattern=/var/local/cores/core.%e.%p.%t' | sudo tee /etc/sysctl.d/core.conf
$ sudo sysctl -p /etc/sysctl.d/core.conf

Полный список шаблонов есть в man 5 core:
%%  a single % character
%p  PID of dumped process
%u  (numeric) real UID of dumped process
%g  (numeric) real GID of dumped process
%s  number of signal causing dump
%t  time of dump, expressed as seconds since the Epoch,  1970-01-01 00:00:00 +0000 (UTC)
%h  hostname (same as nodename returned by uname(2))
%e  executable filename (without path prefix)
%c  core  file  size soft resource limit of crashing process (since Linux 2.6.24)
Теперь проверяем, будут ли сохраняться файлы в нужном месте. Открываем новый терминал и выполняем команды:

$ ulimit -c unlimited
$ kill -SIGSEGV $$

Терминал должен закрыться, а в /var/local/cores появиться новый файл

$ ls -l /var/local/cores/core.*
-rw------- 1 andrey andrey 1482752 Фев 25 13:47 /var/local/cores/core.zsh.7388.1361789269

Комментариев нет:

Отправить комментарий