Как я могу запустить демоны с помощью 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-функции. Так что вы можете изменить его как хотите. Я здесь ничего не тестирую, так что попробуйте!