E se você usar strace e redirecionar a saída dele para um arquivo usando a opção -o ?
[root@host ~]# strace -o /root/slapd_strace.log slapd --parameters --you --want
Eu tenho um processo daemon ( slapd ) que às vezes pára sem razão aparente. Nenhum segfault ocorre. Nada de especial nos logs.
Estou tentando usar acct para acompanhar a vida do processo, especialmente seu valor de saída. O man diz que o kernel registra esse valor. Surpreendentemente, meu dump-acct não mostra essa informação ...
Eu tive que mudar a fonte adicionando esta linha na função print_pacct_record() :
(void)fprintf(out, "%4u|", rec->ac_exitcode >> 8);
EDIT: esta alteração foi adicionado recentemente ao mainstream .
No entanto, sinto que isso não será suficiente para descobrir qual é o problema.
Existem maneiras melhores de rastrear como o programa sai? Um rastreamento de pilha, por exemplo, seria interessante. O "último rastreamento de segundos" seria ainda melhor.
Eu pensei em strace ou ltrace , mas o programa pode ser executado por dias antes de "parar". Temo que o "rastreamento" tenha impacto no desempenho. Eu não sei se gdb poderia ajudar.
E se você usar strace e redirecionar a saída dele para um arquivo usando a opção -o ?
[root@host ~]# strace -o /root/slapd_strace.log slapd --parameters --you --want
Tente executar strace em screen ou tmux . Quando estiver em execução, você poderá desconectar e reconectar somente quando necessário. screen mantém um buffer de rolagem (como pode ser tmux ) para que você nem precise se preocupar com dicas importantes rolando para fora da parte superior da página.
screen -h 1000
strace ...
# disconnect with Ctrl-a d
Mais tarde
screen -r