質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Q&A

解決済

1回答

1504閲覧

シェルスクリプト 圧縮

takasi_tanaka

総合スコア14

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

0グッド

0クリップ

投稿2017/06/13 12:16

編集2017/06/22 05:59

アクセスログとエラーログをgzに圧縮したいです。
コマンドを教えてくれると嬉しいです。
Apache
centos6です

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2017/06/13 12:54

圧縮時点で残っている、2日前のaccess_log.gzファイルはどうしますか?削除? また、logrotateコマンドは知っていますか?
takasi_tanaka

2017/06/13 12:59

2日前のは残します。できればシェルスクリプトで書き、cronに登録して実行したいです。
otn

2017/06/13 13:04

残すと言われても、ファイル名がかぶりますが?logrotateコマンドで用が足りるかどうか調べて下さい
takasi_tanaka

2017/06/13 13:07

すいません…残さなくてよいです 課題内容がシェルスクリプトなのでシェルスクリプトでお願いしたいです。
otn

2017/06/13 13:14

課題ですか
takasi_tanaka

2017/06/13 13:25

はい よろしくお願いしたいです。
otn

2017/06/13 14:47

課題なら、出来たところまで書きましょう
takasi_tanaka

2017/06/13 19:29

それが最初の一行目の#!/bin/sh しかわからず…
guest

回答1

0

ベストアンサー

圧縮した後gzのファイルしか残らないと思うのですが、次のアクセスログとエラーログはちゃんと出力されますか?

mvではファイルディスクリプタがそのままなので(同ディスクパティション内)次ログも書き込まれてしまいます。gzip access_log すると違うファイルが作成されるので次のログが書き込まれません。

スクリプトファイルはどのようにしたいいいでしょうか?

このサイトを参考に作成されてはどうでしょうか。
apachectl gracefulがお勧めとおもいました。

今日の時点に於いて一日前を切り取るのは面倒なので、毎日深夜にてログを作成する事をお勧めします。
例えばlinuxであれば、cronで0時に起動して日付の付いたログを作成する方法が考えられます。

<httpd_rotate.sh> #!/bin/sh DAY=$(date -d '-1 day' +%Y%m%d) cd /home/user/log mv access_log access_log.$DAY mv error_log error_log.$DAY /usr/sbin/apachectl graceful sleep 60 gzip access_log.$DAY gzip error_log.$DAY apache起動ユーザのcrontabに登録 0 0 * * * /home/hoge/httpd_rotate.sh >/dev/null 2>&1

apachectlの場所は、find / -name apachectl で探してみてください。
sleepの長さはapachectlが終了以上の充分な値を設定します。

投稿2017/06/14 00:45

編集2017/06/14 03:21
A.Ichi

総合スコア4070

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takasi_tanaka

2017/06/14 01:24

サイトを見てもわからないので どのように書けばいいか教えてくれると嬉しいです。 また1日前以前を対象にするにはどうしたらいいでしょうか?
takasi_tanaka

2017/06/14 02:21

回答 ありがとうございます これを実行した場合 元の access_logとerror_logのファイルは消えてしまいますか?(gzに圧縮されたファイルしか残らないですか?)
A.Ichi

2017/06/14 02:24

私の環境で実験した結果では、apachectl graceful後に新たに access_logとerror_logが作成されます。
takasi_tanaka

2017/06/14 02:30

わかりました ありがとうございます 質問多くてすいません これは一日前以前のログを圧縮することになっていますか?
A.Ichi

2017/06/14 02:55

常に24最低24時間分のログを残したいという事であれば違いますね。0時時点では0になります。 そうであればcopy後にログの先頭から24時間分を削除する方法は有りますが、それが最適であるかは疑問です。
takasi_tanaka

2017/06/14 03:02

DAY=$(date -d '1 day' +%Y%m%d) は一日前を表しているんですか?
A.Ichi

2017/06/14 03:17

深夜0時なので一日前の日付です。昨日
A.Ichi

2017/06/14 03:20

DAY=$(date -d '-1 day' +%Y%m%d)でしたすみません訂正します。
A.Ichi

2017/06/14 04:09

追加ですが/usr/sbin/apachectl gracefulは接続中の実行の終了を待ちますので、深夜にapache接続が長いものが想定されるのであれば600,3600とか大きい数字にしてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問