slapd
時々何らかの理由で停止するデーモンプロセス()があります。セグフォルトは発生しません。ログには特別な内容はありません。
だから私が使用したいのは、acct
プロセスのライフサイクル、特に終了値を追跡することです。man
カーネルが値を記録したことを示します。驚いたことに、私のdump-acct
情報は表示されません...
print_pacct_record()
関数に次の行を追加してソースを変更する必要がありました。
(void)fprintf(out, "%4u|", rec->ac_exitcode >> 8);
編集:この変更は最近追加されたアルコール。
しかし、これだけでは問題を見つけるには足りないと思います。
プログラムの終了方法を追跡するより良い方法はありますか?たとえば、スタックトレースは興味深いでしょう。 「最後の瞬間トラッキング」が良いでしょう。
strace
私はどちらかを考えましたが、ltrace
プログラムは「自己停止」する前に数日間実行することができます。パフォーマンスに影響を与える「トラッキング」が心配です。私が助けることができるかもしれませんgdb
。
答え1
strace
そのオプションを使用して出力をファイルにリダイレクトするとどうなりますか-o
?
[root@host ~]# strace -o /root/slapd_strace.log slapd --parameters --you --want
答え2
strace
または以下でscreen
実行してみてくださいtmux
。実行した後は、切断して必要なときにのみ再接続できます。ページの上部にスクロールする重要な手がかりを心配する必要さえないように、screen
スクロールバッファを維持します(おそらくそうです)。tmux
screen -h 1000
strace ...
# disconnect with Ctrl-a d
〜の後
screen -r