2009-07-21 4 views
2

私は次のスクリプトは、私のApacheのログcronを介して、予定されているApacheのログローテーションスクリプト

#!/bin/sh 
dt=`date +%m%d%Y` 
cp /var/log/httpd/domainname/www/error_log /var/log/httpd/domainname/www/oldlogs/error_log$dt 
cat /dev/null > /var/log/httpd/domainname/www/error_log 
cp /var/log/httpd/domainname/www/access_log /var/log/httpd/domainname/www/oldlogs/access_log$dt 
cat /dev/null > /var/log/httpd/domainname/www/access_log 

バックアップを実行しています。毎晩ログがバックアップされ、空になります。しかし、翌朝、私はいつも奇妙な文字でファイルを取得します。

[[email protected] oldlogs]# ls 
access_log07202009?? access_log07212009?? error_log07202009?? error_log07212009?? 

[[email protected] oldlogs]#cat access_log072 
access_log07202009^M^Maccess_log07212009^M^M 

私は原因を見つけることができません。何か案が?

+1

私はこの*がserverfaultに属していないと確信しています。シェルスクリプトは、プログラミング、単純でシンプルです。 – paxdiablo

+0

私は実際にserverfaultでこのバグを提出し始めましたが、あなたがPaxを述べた理由でここにファイルを保存することに決めました。サポートしてくれてありがとう! – Scott

答えて

2

logrotateは、私がチェックされたいあなたの友人

+0

ログアウトについて知らなかった。素晴らしいと私はもはやホイールを再発明する必要はありません。 – Scott

1

です:

  • ​​変数をcronジョブ(echo "${dt}" | od -xcb >/tmp/qq)の中から、
  • 実際のスクリプト自体(od -xcb scriptname);

どこかで奇妙な文字が生成されているかどうかを確認する。

また、私はあなたの2番目のコマンドを見つけることができません。そこにaccess_log072ファイルがありますか、何らかの形でコマンドが切り捨てられましたか?