myapp
это приложение, которое в конечном итоге падает. Я хотел бы получить дамп ядра этих сбоев ...
Это сценарий выскочки, который я написал для достижения этой цели. Это еще не работает.
description "myupstart"
start on runlevel [2534]
stop on runlevel [!2534]
script
ulimit -c 10000
echo "/var/crash/core.%e.%s.%u.%g.%p.%t" > /proc/sys/kernel/core_pattern
cd /path/to/app
./myapp
end script
respawn
Подробности:
myapp
работает с отбрасыванием разрешений. Он начинается как root [конечно], а затем переключается на другое имя пользователя / группу. Это проблема?
Следующие команды работают в командной строке, если я запускаю приложение вручную, но они не работают в сценарии запуска:
ulimit -c 10000
echo "/var/crash/core.%e.%s.%u.%g.%p.%t" > /proc/sys/kernel/core_pattern
Почему такая разница?
Попытайтесь делать отдельный сценарий удара обертки с командами между script
и end script
и передача это к exec
опция в том же новомодном файле.
Шанс состоит в том, что безотносительно ulimit -c 10000
делает исчезает к тому времени, когда выскочка звонит ./myapp
.
Также примечание, что это не довольно корректно для именования файла "новомодным сценарием". Это - конфигурационный файл. Это, может оказаться, содержит исполняемые строки, но его основная цель состоит в том, чтобы сохранить конфигурацию и не исполняемые команды.
Приложение: я followd та же логика выше, но вместо создают другой сценарий, у меня была идея, делают ulimit -c 10000 && ./myapp
, и это работало! выскочка приняла &&
Следующее должно работать одинаково хорошо.
description "myupstart"
start on runlevel [2534]
stop on runlevel [!2534]
limit core 10000 10000
chdir /path/to/myapp
pre-start script
echo "/var/crash/core.%e.%s.%u.%g.%p.%t" > /proc/sys/kernel/core_pattern
end script
exec /path/to/app/myapp