質問: Apache(1.3.28)のログについて質問です。 httpd.confのvirtualhost設定で、指定していたログ保存パス(ディレクトリ)が存在しなかった場合に、対象のバーチャルドメインのアクセスログをなんとか抽出する方法はありませんか? SSLやApache共通のログは見ましたが、NGでしたので、望みはないと思うのですが、どこかに復旧可能なリソース(メモリやスワップ?)がないものかと思って質問しました。 ※不可という回答は不要です。
回答: いくつか条件を満たしていれば、復元可能です。 * apache のプロセス起動の時点ではログが存在していた ( = その後ログローテートや誤操作でログファイルが消えた ) * ログファイル削除後、apachectl graceful などのログファイルを開き直す操作を一切行っていない * お使いの OS の procfs (に相当するもの) にファイル記述子を扱う機能がある このような状態にある場合、ファイル記述子を使って、 > > % head /proc/$PID/fd/XXXX > > > // 必要なログファイルに割り当てられていた FD を見つける > > > % dd if=/proc/$PID/fd/5 of=/home/lost-log.txt > > > // 当該 FD をたぐって、ファイルに落とす > > > ・・・というような操作が可能です。 ( 上記の例は Solaris の場合ですが、linux などでも同様の手法がとれるかと思います )