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