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

Никаких резервных копий для демонов, запускаемых при загрузке с помощью init.d в Ubuntu

Как я могу запустить демоны с помощью init.d при загрузке для coredump в Ubuntu? Это то, что я делал до сих пор ...

echo "ulimit -c unlimited" >> /etc/profile
mkdir /corefiles/
chmod 777 /corefiles/
echo "kernel.core_pattern=/corefiles/core.%e.%u.%t" >> /etc/sysctl.conf
echo "fs.suid_dumpable=1" >> /etc/sysctl.conf
echo "kernel.core_uses_pid = 1" >> /etc/sysctl.conf
sysctl -p

Это отлично работает для всего, кроме демона, который запускается init.d при загрузке. Я использую Ubuntu 10.04. Я ищу решение, которое не требует редактирования каждого файла init.d демонов.

РЕДАКТИРОВАТЬ: Кроме того, демоны, запущенные с помощью sudo, не выполняют резервное копирование.

Почему бы не использовать Аппорт? Он отключен по умолчанию в версиях Ubuntu, не предназначенных для разработки, но он по-прежнему установлен по умолчанию AFAIK.

/etc/profile поступает только из вашей оболочки входа в систему, а не из сценариев инициализации.

/etc/security/limits.conf также будет влиять только на сеансы входа в систему, поскольку эти ограничения устанавливаются pam_limits.so; из man-страницы pam_limits:

Модуль PAM pam_limits устанавливает ограничения на системные ресурсы, которые могут быть получены в пользовательском сеансе.

Чтобы добиться желаемого поведения, вам следует изменить сценарий инициализации и вставить свой ulimit -c unlimited команда. Как упоминал Дом, вы также можете сделать это, отредактировав библиотеку lsb init-functions.

/etc/profile выполняется, когда пользователь входит в интерактивный сеанс (и даже в этом случае это зависит от метода входа и оболочки входа). Это не влияет на запускаемых при загрузке демонов.

По-видимому (я не проверял, чтобы подтвердить), дампы ядра отключены в Ubuntu 10.04. Их можно включить, установив ненулевой предел размера в /etc/security/limits.conf. См. Комментарии в этом файле и limits.conf справочную страницу для получения дополнительной информации. Я думаю, вы захотите добавить строку вроде

*  soft  core  2000000

Взаимодействие с другими людьми

Программы с повышенными привилегиями обычно не сбрасывают ядро ​​(я не знаю точного правила в голове). Это может повлиять на процессы, запускаемые напрямую через повышение привилегий, например sudo foo; пытаться sudo sh -c foo вместо этого (чтобы дочерний процесс запускался на последнем уровне привилегий).

Я думаю, что все эти опции необходимы запускаемым вами демонам. Чтобы иметь дамп ядра, вы должны добавить команду ulimit в начало пусковых установок. Пусковые установки должны использовать / lib / lsb / init-функции. Так что вы можете изменить его как хотите. Я здесь ничего не тестирую, так что попробуйте!