core.<pid>
ファイル作成の開始/終了をどのように決定しますか?
答え1
一つ入れてもいいinotifyコアファイルが含まれるディレクトリを見てください。デモ:
/tmp$ { ulimit -c unlimited; exec sleep 9999; } &
[1] 25646
/tmp$ kill -QUIT %1
[1] + 25646 quit (core dumped) { ulimit -c unlimited; exec sleep 9999; }
他の端末から:
$ inotifywait -e close_write /tmp
Setting up watches.
Watches established.
/tmp/ CLOSE_WRITE,CLOSE core
CLOSE_WRITE
コアファイルが完全に作成されると、最後の行報告イベントが発生します。
または、Linuxを使用してコアファイルの作成をカスタマイズできます。これはシステム全体の設定であり、ルートアクセスが必要なため、状況に適している場合とそうでない場合があります。設定できますkernel.core_pattern
I/W制御標準出力でコアコンテンツを受け取るプログラムを指します。おもちゃのプログラムは次のとおりです。
#!/bin/sh
cat >"/var/cores/$1-$2-$3.core"
# Do whatever you want now that the core file has been written
echo "/var/cores/$1-$2-$3.core" | mail -s "$4 dumped core" denys
に/usr/local/sbin/my_core_dumper
登録
sysctl kernel.core_pattern='|/usr/local/sbin/my_core_dumper %t %P %e %E'
答え2
これを決定する「フック」があるかどうかはわかりませんが、OSコアダンプでない限りすぐに実行されます。私の経験では、コアファイルを見るとダンプが完了しました。コアや他のファイルをダンプするのに時間がかかる場合は、通常、ループ内で5秒間隔でファイルサイズを確認し、3〜4回繰り返し以内に増やさないと完了したと安全に想定できます。
私はこれがあなたが探しているものではないことを知っていますが、他に解決策がない場合は実用的な解決策です。