私は毎月 OpenVPN ログファイルをローテーションしようとしています。問題は、単にファイル名を変更するだけではうまくいかないということのようです。データは依然として古いファイルに書き込まれます (これは、ログファイルが開いたままで、ログが依然として古いファイル オブジェクトに書き込まれることを示しています)。
そこで、新しいログ ファイルの場所へのシンボリック リンクを更新した後、毎月初めに openvpn を再起動するスクリプトを作成しました。
しかし、このスクリプトにはバグがあるようで、サーバーを正しく起動できないことがあります (tun0 がダウンすることがあります)。
そこで、OpenVPN でログローテーションを実現するより良い方法をご存知の方がいらっしゃいましたらお聞きしたいです。
編集ovpn
: 私はDebian Squeezeを使用していますが、再起動スクリプトはサーバーの停止と起動の間に5秒間スリープします。
答え1
この状況に対処するには 2 つの方法があります。理想的な方法は、シグナル経由でプロセスに通知するか、ディレクティブ経由でプロセスを再起動することですpostrotate
。もう 1 つの方法は、 を使用することです。copytruncate
このcopytruncate
方法は、状況に応じて機能するはずです。ドキュメントの説明は次のとおりです。
copytruncate
Truncate the original log file in place after creating a copy,
instead of moving the old log file and optionally creating a new
one, It can be used when some program can not be told to close
its logfile and thus might continue writing (appending) to the
previous log file forever. Note that there is a very small time
slice between copying the file and truncating it, so some log-
ging data might be lost. When this option is used, the create
option will have no effect, as the old log file stays in place.
答え2
syslog にログインするための回避策はどうでしょうか?
--daemon [progname]
(または--syslog [progname]
)の使用法についてはman openvpn
(http://openvpn.net/index.php/open-source/documentation/manuals/65-openvpn-20x-manpage.html)