- 締切済み
logrotateのリネーム後のファイル生成
ログローテート のツールとクーロンを利用して、ログファイルを定期的にローテートさせます。 以下の順でローテートさせます。 (1)ログファイルをリネームする (例access.log→access_20041001.log) (2)新たにログファイルを生成させています。 (例access.log) そこで、質問ですが、(1)と(2)の間にログを出力する間はわずかでも間隔があるのでしょうか? その間にログを出力させようとしたときは、(2)のファイルが未だ存在が存在しないので、出力できないのでしょうか? 以上のことは、起こりえないのでしょうか? 以下にlogrotate.confの一部を示します。 /home/review/log/review/access.log { daily create 0644 review review rotate 1 postrotate EXT=`date --date '1 days ago' +%Y%m%d` for f in $1; do mv $f.1 /home/review/log/review/access_$EXT.log; done endscript }
- みんなの回答 (2)
- 専門家の回答
関連するQ&A
- logrotateの設定にういて
掲題の通り、logrotateの設定についてご教授いただきたいのですが、 現在、/etc/logrotate.confには以下のように設定を入れています。 (OSはDebian3.1を使用しています) 【/etc/logrotate.conf】 daily rotate 93 create ifempty nocompress noolddir include /etc/logrotate.d 「ifempty」と書いておくことで、サイズ0のファイルもローテートされるという認識でいたのですが、実際に動かしてみると、サイズ0のファイルハローテートされていません。 -vオプションで動かしてみると「log does not need rotating」と出ます。 「/etc/logrotate.d」配下の設定ファイルにも 「notifempty」が設定されていないのは確認しているのですが 他にどこを確認すれば良いのでしょうか? ご教授よろしくお願いいたします。
- ベストアンサー
- その他(ITシステム運用・管理)
- logrotateにつきまして
CentOS6.3にて logrotateの対象ファイルのパスを間違って記述してました。 (/var/log/iptables.log を /home/iptables.log と記述していました) 【/var/lib/logrotate.status 中身】 "/home/iptables/iptables.log" 2013-2-21" 【一次対応】 /etc/logrotate.d/iptables ファイルの中身を、/var/log/iptables/iptables.log と修正し、 コマンド:logrotate -dv /etc/logrotate.d/iptables を実行しましたが、下記エラー?が表示されました 【エラー】 reading config file /etc/logrotate.d/iptables reading config info for /var/log/iptables/iptables.log Handling 1 logs rotating pattern: /var/log/iptables/iptables.log after 1 days (30 rotations) empty log files are rotated, old logs are removed considering log /var/log/iptables/iptables.log log does not need rotating 【質問】 iptables.log" 2013-2-21"から1日ずつログを取り出し、ロテートさせて ファイルを作成したいのですが、どのように対応すればよいのでしょうか? ご教授お願いします。
- ベストアンサー
- Linux系OS
- apacheのアクセスログについて
ログを自動的に整理しようと、/etc/logrotate.conf定義でrotate 8から rotate 4に戻しましたが a_access_log.1085011200というファイルが作成されますが、こちらの方に最新のログが記録されていて、 肝心のa_access_logには、1ヶ月半以上前のデータが残っています。 意味的に正しいのでしょうか?アクセス解析で常に最新のデータを使いたいのですが、これでは 古いデータを使うことになります。
- ベストアンサー
- Linux系OS
- cronの実行がうまくいかない。
ubuntu18.04 LTSでcronのテストをしているのですが期待通りに動きません。 下記で、6時42分にログローテートが行われません。 原因と対策について教えて下さい。 ・/etc/crontab 42 6 *** root test -x /usr/sbin/anacron || (cd /&& run-parts --report /etc/cron.daily) ・/etc/cron.daily logrotate の記述がある。 ・/etc/logrotate.conf include /etc/logrotate.d の記載がある。 ・/etc/logrotate.d/logrotate_1.conf /tmp/rotate/test.log { daily compress maxsize 1M create 0660 root root rotate 5 } ・/tmp/rotate/test.log が存在している。 尚、 ・手動実行 sudo logrotate -f /etc/logrotate.d/logrotate_1.conf では、 /tmp/rotate 実行後に、 test.log test.log.1.gz が存在します。
- 締切済み
- Linux系OS
- logrotateの実行時間
logrotateで「/etc/cron.daily/」以下に日次で実行したいスクリプトを置いていますが、 一部のログファイルを「0時」にローテートされるようにしたいです。 ネットで検索してみたところ「/etc/crontab」にrun-partsの指定があるという資料は見つけたのですが 私のサーバ(CentOs6)にはそのような記述が見当たりません。 「/etc/cron.daily0」のようなディレクトリを作成し、そこに記述された内容は毎日0時に実行するといったことは可能でしょうか?
- 締切済み
- その他(ITシステム運用・管理)
- apacheのアクセスログのファイル名について
【環境】 centos4.5 apache2.2.6 現在、テストの為、アクセスログを5分ごとにローテーションさせて、 ファイル名には「年月日時分秒」が入るように設定してますが、 出力されるアクセスログファイル名の時刻がおかしくて困ってます。 【httpd.confの設定値】 CustomLog "|/usr/local/apache2/bin/rotatelogs /usr/local/apache2/logs/access_log.%Y%m%d%H%M%S 300" combined 15時55分に出力されたファイル名 access_log.20071104065500 16時5分に出力されたファイル名 access_log.20071104070500 上記のように 15時だと06 16時だと07 になってしまいます。 年・月・日・分・秒は正確にファイル名に入るのですが、 時だけおかしいです。 dateコマンドだと正常に表示されます 2007年 11月 4日 日曜日 16:44:02 JST 原因が分からず困っています。 どなたか教えて下さい。宜しくお願いします。
- ベストアンサー
- オープンソース
- リダイレクトで空ファイルを生成しない方法
以下のようにcronの実行結果にgrepをかけて、出力をファイルに書き出しているのですが、grepの結果出力がないときにサイズ0のファイルが生成されます。 cron.php | grep -v '\[ OK \]\|#!/usr/bin/php' > log/`date +%Y%m%d`cron.log 出力があるとき以外ファイルを生成させない方法はありますか? 宜しくお願い致します。
- ベストアンサー
- Linux系OS
- apacheのログファイルがいつの間にか消える
Redhat Linux7.0J apache_1.3.19 openssl_0.9.6b apache_1.3.19+ssl_1.44の環境で 下記のログファイルの中身が、いつの間にか 全て消えてなくなるのです。 マシンを再起動すれば、たちまちログ出力は 開始されるのですが、また気付いたら消えています。 消えるまでにどれだけの日数がかかるのかは 分かりません。サーバの再起動は3ヶ月に1回ぐらいは 実施していますが、毎回logのことを調べてはいないので どのタイミングで消えたかは全く不明です。 定期的に消えるような処理が自動的に動いているのでしょうか?(それはcronという機能のことですか?cronの設定とかよく分からないのですが現状どのようなcronが動いているか確認する手段(コマンド)はありますか?) [ログファイルは、下記のように1ファイル/1Wずつ保存されていて気付いたら中身が消えている] /usr/local/apache/logs/httpsd_access_log ・・・ /usr/local/apache/logs/httpsd_access_log.4 /usr/local/apache/logs/httpsd_error_log ・・・ /usr/local/apache/logs/httpsd_error_log.4 ログのrotationについては /etc/logrotate.d/syslogファイルに 下記を記述しています。 この記述方法が悪いのでしょうか? インストールの初期状態で自動的に記述されていた maiilogファイルなどを真似して記述したのですが 間違いがありますか? [/etc/logrotate.d/syslogファイルの記述] /usr/local/apache/logs/httpsd_access_log { postrotate /bin/kill -HUP `cat /var/run/xinetd.pid 2>/dev/null` 2>/dev/null || true endscript } /usr/local/apache/logs/httpsd_error_log { postrotate /bin/kill -HUP `cat /var/run/xinetd.pid 2>/dev/null` 2>/dev/null || true endscript }
- 締切済み
- その他(OS)
- 5秒に1回以上アクセスしてくる接続元IPをアクセスログから抽出したい
1分おきにアクセスログを調査し、"/cgi/test.cgi" というファイルに 過去1分間 に12回以上(5秒に1回以上)アクセスしている接続元IPがあるかを 検査したいと思っています。 調査するアクセスログファイルは以下のような位置にドメイン名ごとに在ります。 /home/account/ドメイン名1/access_log /home/account/ドメイン名2/access_log /home/account/ドメイン名3/access_log そしてアクセスログのフォーマットは以下のように、 接続元IP、アクセス日時、アクセス先ファイル、User-agent の順です。 66.77.88.99 - - [01/Mar/2010:21:56:39 +0900] "GET /cgi/test.cgi?order=&class=1& HTTP/1.1" 200 3191 "-" "Mozilla/5.0 (compatible; Googlebot/2.1)" ------------------------------- 例えば単純に #tail -n 100 /home/account/*/access_log |grep "/cgi/test.cgi" で、過去ログ100行分の中で /cgi/test.cgi にアクセスしている 接続元IPの一覧は分かりますが、 「過去1分間に12回以上出現しているIP」を抽出するには、 うまい方法が分かりません。 shはcronで1分おきに実行させる予定です。 よい方法がありましたら、ぜひご提示頂きましたら嬉しいです。どうぞ宜しく御願いいたします。
- ベストアンサー
- Linux系OS