Как настроить автоматический дамп ядра в сценарии Upstart?

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

Почему такая разница?

3
задан 10 July 2018 в 18:24

2 ответа

Попытайтесь делать отдельный сценарий удара обертки с командами между script и end script и передача это к exec опция в том же новомодном файле.

Шанс состоит в том, что безотносительно ulimit -c 10000 делает исчезает к тому времени, когда выскочка звонит ./myapp.

Также примечание, что это не довольно корректно для именования файла "новомодным сценарием". Это - конфигурационный файл. Это, может оказаться, содержит исполняемые строки, но его основная цель состоит в том, чтобы сохранить конфигурацию и не исполняемые команды.

Приложение: я followd та же логика выше, но вместо создают другой сценарий, у меня была идея, делают ulimit -c 10000 && ./myapp, и это работало! выскочка приняла &&

0
ответ дан 10 July 2018 в 18:24

Следующее должно работать одинаково хорошо.

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
0
ответ дан 10 July 2018 в 18:24

Другие вопросы по тегам:

Похожие вопросы: