2009-07-21 113 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文件在那里或者你的命令被截断?