2009-07-21 108 views
2

我有以下的腳本來運行備份我的Apache日誌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 

這是通過cron調度。因此,每天晚上日誌都會備份並清空。然而,第二天早上,我總是用怪異字符的文件之日起

[[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。 Shell腳本編程簡單明瞭。 – paxdiablo 2009-07-21 14:41:00

+0

我實際上已經開始在serverfault上提交這個bug,但是因爲你聲明Pax的原因而決定在這裏提交它。謝謝你的支持! – Scott 2009-07-21 15:26:35

回答

2

logrotate是你的朋友

+0

不知道logroate;很棒,我不再需要重新發明車輪。 – Scott 2009-07-21 15:23:28

1

我會檢查:

  • 從cron作業(echo "${dt}" | od -xcb >/tmp/qq)內​​變量;和
  • 實際腳本本身(od -xcb scriptname);

看看是否有奇怪的字符在任何地方生成。

另外,我無法弄清楚你的第二個命令。有沒有access_log072文件在那裏或者你的命令被截斷?