Como posso configurar um dump automático em um script Upstart?

3

myapp é um aplicativo que falha eventualmente. Eu gostaria de obter o core dump dessas falhas ...

Este é o script iniciante que escrevi para conseguir isso. Ainda não funciona.

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

Detalhes:
myapp funciona com a queda de permissões. Começa como root [claro] e depois muda para outro nome de usuário / grupo. Isso é um problema?

Os seguintes comandos funcionam na linha de comando se eu iniciar o aplicativo manualmente, mas eles não funcionam no script upstart:

ulimit -c 10000
echo "/var/crash/core.%e.%s.%u.%g.%p.%t" > /proc/sys/kernel/core_pattern

Por que essa diferença?

    
por Wagner Patriota 22.05.2014 / 20:43

2 respostas

5

Tente criar um script bash de wrapper separado com os comandos entre script e end script e passe isso para uma opção exec no mesmo arquivo upstart.

Oportunidade é que seja qual for o ulimit -c 10000 desaparece quando as chamadas de inicialização forem lançadas ./myapp .

Observe também que não é muito correto nomear seu arquivo como "script upstart". É um arquivo de configuração. Pode acontecer de conter linhas executáveis, mas seu objetivo principal é armazenar configurações e não comandos executáveis.

Adendo: Segui a mesma lógica acima, mas em vez de criar outro script, tive a ideia de fazer ulimit -c 10000 && ./myapp e deu certo! o upstart aceitou o &&

    
por sмurf 30.05.2014 / 03:26
1

O seguinte deve funcionar igualmente bem.

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
    
por CameronNemo 02.06.2014 / 06:04