我有一个应用程序在这样的结构中创build日志文件: maillog/ 2012-07-02/ production_environment-2012-07-02__23_51_50-1341265910-some name.log production_environment-2012-07-02__23_51_52-1341265912-some other name.log … 2012-07-03/ production_environment-2012-07-03__04_26_47-1341282407-third name.log production_environment-2012-07-03__04_26_47-1341282407-more names.log … 2012-07-04/ … 2012-07-05/ … 我正在寻找一个很好的方式来旋转这些日志目录。 如果可能的话,我想压缩每个目录中的文件(没有问题logrotate),并旋转过时的目录(不可能与logrotate?)。 我很犹豫这样写脚本,因为我确信有一些好的工具可以做这种工作。 任何想法如何处理这个?
我注意到我们的一台服务器在logrotate运行之后就开始返回错误,即在nginx错误日志中我可以看到: 当读取来自上游的响应标题时,客户端:xxx.yyy.zz.ww,服务器:www.test.com,请求:“GET”错误8501#0:* 118126869失败(104:连接复位) /index.php HTTP / 1.1“,上游:”fastcgi://127.0.0.1:9011“,主机:”www.test.com“ 我已经尝试添加postrotate行动,将使PHP重新装载优雅,但错误仍在发生,我们目前的logrotate如下: /var/log/php5-fpm.log { daily missingok rotate 52 compress delaycompress notifempty create 644 root root postrotate [ ! -f /var/run/php5-fpm.pid ] || kill -USR2 `cat /var/run/php5-fpm.pid` endscript } PHPconfiguration如下: [www-9011] user = www-data group = www-data listen = 127.0.0.1:9011 listen.backlog = 65535 pm = ondemand pm.max_children = 50 pm.process_idle_timeout […]
我pipe理运行Apache2和ColdFusion的Windows Server 2003(标准版,32位)安装。 该服务器有100多个虚拟主机,每个虚拟主机都有一个访问日志和一个错误日志。 我一直在寻找一个经典的Linux logrotate命令的模拟(或win32端口),它允许日志文件轮换而不中断Apache的locking机制。 我find的每个解决scheme,包括chomp ,相互矛盾的logrotate bash脚本, apachelogrot和几个Perl日志轮转脚本; 他们都: 停止阿帕奇 旋转日志 启动apache 显然,这对于如此多的虚拟主机来说是不可取的,因为它会每晚停止和重启Apache数百次。 我也调查了使用rotatelogs ,它与apache和cronolog ,它使用pipe道输出来创build个人每日/每周/每月的日志。 这些程序不需要重新启动apache来轮换日志,但是它们会为每个日志文件生成一个进程实例,从而导致运行数百个守护进程,每个守护进程消耗200到300k的内存。 我也尝试在cygwin上编译经典的Linux logrotate命令,但没有运气。 你们有没有build议我应该尝试下一步? 或者,甚至更好的是,你们有没有设法使用经典的Linux logrotate命令来编译cygwin或其他win32编译器?
我想按照以下规则安排日志轮换: 日志文件最后2天保持不变 超过2天的日志文件被归档并移动到按date命名的文件夹,它们被创build。 (例如,2012年12月1日的所有日志都将移至20121201并存档。) 超过14天的日志文件将被删除。 我想为此使用logrotate,但是我不确定它是否适合我的需求。 我想要这样的东西,但它不起作用。 /mylog/* { prerotate DIR=$(date +%y%m%d); // actually it's current date mkdir $DIR endscript daily rotate 2 olddir /mylog/$DIR missingok compress postrotate find /mylog -type d -mtime +180 | xargs rm -f endscript } Logrotate不理解$ DIR是可变的。 任何build议,欢迎!
我在我的/etc/logrotate.conf文件中有以下几行,我不太清楚他们在做什么: (编辑显示完整文件) # see "man logrotate" for details # rotate log files weekly weekly # keep 52 weeks worth of backlogs rotate 52 # <– added it by me # create new (empty) log files after rotating old ones create # uncomment this if you want your log files compressed #compress # RPM packages drop […]
我有一个每日logrotate设置与compress , missingok , delaycompress , dateext选项。 我需要压缩延迟的日志文件。 我现在可以手动吗?或者我应该等到logrotate运行的时候再做。 我只是不知道是否logrotate有一些内部存储,如果它会看到文件已经压缩,会不会感到困惑?
我正在使用脚本实用程序来loggingterminal会话,并使用logrotate(使用copytruncate ,脚本忽略HUP,并不断写入旋转的文件)定期上传到目前为止发生的事情块到另一台服务器。 这对于实际的屏幕内容非常有用。 今天我也试图捕捉脚本发送到STDERR的时间信息。 所以我的新脚本configuration看起来像 script -faqt session.record 2> session.timing 问题是,当我在定时数据(session.timing)上使用logrotate时,回填文件以输出中的大量空字节开始,这导致scriptreplay在重新读取重build的文件时发生。 是否有一个已知的问题(并希望解决方法)使用logrotate与STDERR上的copytruncate选项redirect到一个文件?
我想为每当我开始一个服务做日志文件旋转,但从来没有“自动”。 我正在运行一个基于python的服务,logging到一个特定的日志文件。 该服务(当前)不支持通知重新打开它的日志文件(例如USR1陷阱)。 此外,该服务不能重新启动日志文件旋转(它产生一个连续的audiostream,不应该中断)。 我正在运行的系统没有硬件时钟,所以每当系统启动时,时钟就会被重置,这使得日志条目源于同一文件中的不同重新启动,这是很乏味的(我多次获得相同的date)。 我也想保持各种靴子的历史。 所以想法是在每次启动时使用logrotation(仅)。 就像运行/usr/sbin/logrotate –force /etc/logrotate.d/myservice在启动服务之前应该做的。 现在我的问题是,是否有可能以这种方式在/etc/logrotate.d/myserviceconfiguration日志旋转,它将永远不会自动运行? 一个简单的解决办法是不把我的logrotate-config文件存储在/etc/logrotate.d/ ,而是“别的地方”。 但是,我想让我的用户能够在一个众所周知的地方findlogrotate-config(所以他们可以修改configuration的意愿)。
我正在将所有服务器的日志轮转任务移动到logrotate。 服务器有几个PHP-FPM池,每个池都configuration了一个单独的error_log指令。 日志的logrotate配方相当简单: /var/log/php/*.log { rotate 7 daily missingok notifempty delaycompress compress dateext sharedscripts postrotate # Need for signaling the php-fpm process? endscript } 我应该向php-fpm池发送一些信号来捕获error_log文件的新句柄(在postrotate脚本中)? 如果是,哪个信号?
我有一个perl脚本,我想作为日志旋转的脚本脚本运行。 当我强制日志旋转作为root运行从命令行,它的工作原理。 但是,当通过cron运行时,SELinux会阻止操作。 我不记得第一个错误是什么,但我使用audit2allow修复了这个错误。 第二天,我得到了一个SELinux阻止脚本的/usr/bin/perl读取访问。 修正了,现在我得到了SELinux阻止/usr/bin/perl从脚本的开放访问。 我迫不及待地想知道我明天会得到什么(因为我不能直接运行testing程序,因为手动运行时它运行正常)。 – 可能是写入其中一个输出文件的问题。 有什么办法来短路这个迭代过程,只是说是的,即使从日志旋转启动,Perl可以运行这个脚本?