我对logrotate有很好的使用经验,但最近在EC2上使用“Amazon Linux”(亚马逊部署的CentOS 6)进行安装时,logrotate无法使Apache重新打开其日志。 Apache的logrotateconfiguration与默认configuration略有不同 – 由于网站stream量高,保留旧日志的最低要求以及EC2实例存储中可用的less量空间,我们每天轮换日志,只保留2天的旧文件: # cat /etc/logrotate.d/httpd /var/log/httpd/*log { missingok notifempty sharedscripts daily rotate 2 compress postrotate /sbin/service httpd reload > /dev/null 2>/dev/null || true endscript } 旋转本身工作正常,旧的日志被压缩。 但是,在logrotate删除旧文件后,Apache实际上并没有重新打开这些日志文件,结果旧文件并没有真正被删除,而且Apache将pipe道数据保留在这些文件中 – 耗尽了可用空间,实际上丢失了日志数据,无障碍。 如果我从命令行(使用sudo或root)手动运行postrotate脚本,Apache将重新打开日志,并获得预期的行为。 日志中没有什么有趣的东西(cron日志中写着“logrotate started”,后面跟着“logrotate finished”),系统邮件没有关于cron作业问题的通知。 这个过程已经持续了几个星期(因为我们把生产服务器从基于Debian的安装移到了基于“Amazon Linux”的安装),而现在我对于如何解决这个问题感到无能为力。 任何帮助将不胜感激。
是否有可能强制logrotate使用一个configuration的UTC时间? 我需要将dateext设置为UTC。 我希望这是像设置datevariables一样简单。 我应该只是运行postrotate和MV文件到一个新的文件名,把事后的UTC时间。 我只是在寻找一个最佳实践或最实际的解决scheme。 提前致谢。 我可爱的尝试便宜了一个设置variables。 🙂 /var/log/bricks/*.log { DATE=`date -u +%Y%m%d` missingok notifempty copytruncate daily dateext dateformat .%Y%m%d compress }
我已经在Debian 7(在VPS上)上运行了Apache 2.2,为几个不同的网站定义了虚拟主机。 我已经为每个虚拟主机设置了单独的错误和访问日志,但是我还没有find一种方法来根据我的喜好来旋转/归档日志。 当然,Debian上默认的Apache日志是通过logrotate旋转的,但是由于种种原因我并不觉得特别满意 – 主要是因为我想让归档日志按date命名,而且因为每个vhost分别configuration它看起来很麻烦。 我也不确定自动删除旧日志; 我可能只想从服务器下载它们之后手动执行此操作。 我的理想解决scheme是每个月(甚至每周)都做下面的事情: 将date附加到文件名,或将文件移动到名为date的子文件夹。 Gzip存档的文件。 我也需要这个很容易设置为多个虚拟主机。 理想情况下,不应该涉及到重新启动Apache(尽pipe优雅的重启不是世界末日)。 设置这个最好的方法是什么? 我相信这是在…之前完成的
我上周清理了我的apache日志,现在开始出现这些错误。 任何想法如何我可以解决这个问题? /etc/cron.daily/logrotate: logrotate_script: -c: line 1: syntax error near unexpected token `20' logrotate_script: -c: line 1: ` find /var/log/apache2 -name "*.log.gz" -maxdepth 1 +mtime <20> -delete &>/dev/null' error: error running shared postrotate script for '/var/log/apache2/*.log ' run-parts: /etc/cron.daily/logrotate exited with return code 1 文件:/etc/logrotate.d/apache2 /var/log/apache2/*.log { daily missingok rotate 20 compress delaycompress notifempty create […]
我有一个nginx / logrotate的问题。 问题在于nginx正在logging对2个文件(主数据和数据)的访问。 我有以下反configuration设置:0 * * * * / usr / sbin / logrotate -f / home / orwell / orwell-setup / bin / logrotate-nginx 而“logrotate-nginx”文件有以下内容: /tmp/data.log { rotate 90 daily missingok notifempty size 1 sharedscripts postrotate [ ! -f /tmp/nginx.pid ] || kill -USR1 `cat /tmp/nginx.pid` MORE THINGS endscript } /tmp/main.log { rotate […]
我通常不会做这种东西,所以我只需要问。 如何制作一个脚本来检查一个日志文件,可以说它的名字是log.txt,抓取所有的东西,但是从前100000行到新的log.txt文件,并删除旧的log.txt? 它也必须每月运行。 到目前为止,我的零编码知识,我只设法创build一个脚本,每月会删除log.txt一次(新的一个自动生成),但我真的想保留数据,除了最古老的100 000条目,如下所述。 这是旧的脚本 #!/bin/sh find /mnt/usb_storage/ -type f -name "log.txt" -exec rm -r {} \; 我如何实现它: # cd /privRoot # chmod 755 deleteLogMonthly.sh # crontab -e 59 23 1 * * deleteLogMonthly.sh
是否有任何修改或程序的Apache Httpd旋转日志以及清除他们没有重新启动服务器进程? 我检查了几个选项,mod_autorotate,rotatelogs,mod_log_rotate和cronologs。 抓取mod_autorotate,因为每次需要旋转日志时服务器重新启动。 抓取mod_log_rotate,rotatelogs和cronologs,因为他们没有清除function。 我不完全确定是否可以使用“logrotate”,因为它涉及到cron作业,而且我也不可能为很多运行有大量应用程序的Apache服务器安排cron作业。
让我们从一个小转储开始: /var/log/httpd/*log { compress missingok notifempty sharedscripts delaycompress postrotate /sbin/service httpd reload > /dev/null 2>/dev/null || true endscript } 这是我们的httpd logrotate.d文件的转储。 正如你所看到的,文件旋转后,apache被“重新加载”。 可以禁用这个吗? 我们将代理(通过nginx)转换到我们的apache盒子,并且注意到当这个被执行(httpd reload)时,有2-5秒的停机时间(通过我们的nginx反向代理日志注意到)。 我们想禁用这个。 任何想法如何旋转apache日志,而不会发送一个重新加载后,他们已经被旋转? 谢谢!
以下是我的网站的虚拟示例: <VirtualHost *:80> DocumentRoot /datas/web/woog ServerName woog.com ServerAlias www.woog.com ErrorLog "|/httpd-2.2.8/bin/rotatelogs /logs/woog/error_log 86400" CustomLog "|/httpd-2.2.8/bin/rotatelogs /logs/woog/access_log 86400" combined DirectoryIndex index.php index.htm <Location /> Allow from All </Location> <Directory /*> Options FollowSymLinks AllowOverride Limit AuthConfig </Directory> </VirtualHost> 我现在有12个网站在运行。 这给了像这样的东西: [Shake]:/sources/software/mod_log_rotate# ps x | grep rotate /httpd-2.2.8/bin/rotatelogs /logs/[hidden siteweb]/error_log 86400 /httpd-2.2.8/bin/rotatelogs /logs/[hidden siteweb]/error_log 86400 [snap (as many […]
如何configurationlogrotate只删除所选目录下的所有文件每周一次? 我正在testing以下内容: / var / spool / mydir / * { daily rotate 0 nocompress copytruncate } 但它似乎并没有删除任何东西。 我应该等一天吗? 谢谢。