Articles of logrotate

日志logging在daemontools旋转后不可读

我有一个日志,看起来非常好。 但是,通过daemontools进行日志轮转之后,它不再是人类可读的。 可能是什么问题呢?

为Fluentd文件configurationLogrotate。 必要?

我有以下fluent.conf <source> type forward </source> <source> type monitor_agent port 24220 </source> # Listen DRb for debug <source> type debug_agent port 24230 </source> <source> type tail path /var/data/www/apps/app/logs/*.log pos_file /tmp/fluent.nginx.pos format syslog tag app.nginx-access # Regex fields format /^(?<remote>[^ ]*) (?<host>[^ ]*) (?<user>[^ ]*) \[(?<time>[^\]]*)\] "(?<method>\S+)(?: +(?<path>[^\"]*) +\S*)?" (?<code>[^ ]*) (?<size>[^ ]*) "(?<referer>[^\"]*)" "(?<agent>[^\"]*)"$/ # Date […]

运行pyapns和twistd时如何旋转日志文件

我使用pyapns(Iphone推送服务器),反过来使用扭曲(twistd守护进程)。 twistd守护进程生成twistd.log文件。 它将它们旋转到twistd.log.1,twistd.log.2等twistd.log达到1MB,但它不使用logrotate所以我想它是内置的。 问题是这种情况会一直持续下去,而且旧的日志文件永远不会被删除。 这最终会填满我的磁盘。 我试图使用logrotate或类似的旋转日志,但后来我需要非常经常运行logrotate,因为我需要旋转之前twistd.log达到1MB。 根据产生多less日志,我可以在一秒之内发生这种情况。 那么我怎样才能在不盗取pyapns / twistd脚本的情况下进行login?

旋转nohup.out日志文件

关于如何旋转nohup生成的输出文件,有几个问题。 大多数的答案说使用copytruncate选项使用logrotate 。 然而,这实际上并没有工作 – 当发生旋转时,它会创build旋转的日志文件,但是原始文件实际上并未被截断,并且继续添加日志输出。 这也会发生,如果我不使用nohup ,只是运行myscript.py >>myscript.log (所以基本上copytruncate似乎完全无用)。 什么是“正确”的方式来做到这一点? (如果需要自定义脚本,首选Bash或Python。)

即使文件没有旋转,Logrotate也会执行postrotate

我有我的rsyslog和imfile的问题,当我的一个日志文件被截断时失败。 所以要解决这个问题,我已经修改了logrotate脚本,如下所示: "/etc/logrotate.d/logrotate.elasticbeanstalk.tomcat7.conf": mode: "000644" owner: root group: root content: | /var/log/tomcat7/* { size 1M rotate 5 missingok compress notifempty copytruncate dateext dateformat %s olddir /var/log/tomcat7/rotated postrotate (/sbin/service rsyslog stop && rm -f /var/lib/rsyslog/tomcat-catalina && /sbin/service rsyslog start 2>&1) || true endscript } 在tomcat7文件夹中有或多或less的15个文件,它们都小于1M期望catalina.out所以我希望logrotate在处理这个文件时只执行postrotate脚本,但是在这里它是做什么的: [ec2-user@ixxxxxxx]$ sudo logrotate -v /etc/logrotate.d/logrotate.elasticbeanstalk.tomcat7.conf reading config file /etc/logrotate.d/logrotate.elasticbeanstalk.tomcat7.conf reading config […]

每日轮换logrotate高级date

我已经设置了这样的logrotateconfiguration文件: /var/log/tomcat/catalina.out{ copytruncate daily dateext rotate 10 missingok notifempty } 在我的/ sysconfig / cron设置文件中,我已经设置了DAILY_TIME="00:00"它旋转日志,但是如果一个日志有datecatalina.out-20150415它包含date20150414的日志信息,这是前一天。 我应该更改/ sysconfig / cron文件中的date,或者我可以使用prerotate / endscript选项来实现此目的? 据我所知,DAILY_TIME在15分钟的时间内工作,我希望每日日志只包含一天的信息。 我现在得到的是什么,但文件名中的date不符合它们中的内容。 注意:我在SLES下, 每天的cron工作与其他发行版有些不同。

Logrotate – 如何改变它,使它不会删除日志,并会每6个月创build一个.gz?

我看过那个男人 ,但我还不清楚。 我的问题主要与NGINXnetworking服务器日志有关。 这是我目前的logrotate.conf: # rotate log files weekly weekly # keep 4 weeks worth of backlogs rotate 4 # create new (empty) log files after rotating old ones create # use date as a suffix of the rotated file dateext # uncomment this if you want your log files compressed #compress # RPM packages […]

清除上传文件的caching内存

在我的系统上,我有一个日志文件,每小时进行一次轮换和上传。 该文件在写入时很繁重,只有在旋转和上传时才需要读取。 我的系统上的cached内存正在增加,直到它分配整个RAM,然后操作系统清除其中的一部分。 我想改善这个过程,我怀疑这个日志文件的caching是不断增加的,我一直在写这个日志文件。 我需要find一种方法来清除该文件的caching后,我可以告诉操作系统这已不再需要,让它释放内存。 据我所知, echo 3 > /proc/sys/vm/drop_caches清除所有caching的内存。 那是对的吗? 有没有什么办法只为一个文件清理caching的内存?

postrotate脚本没有收到旋转的文件名

我正在尝试在一个exim日志上做一些处理,但是我的脚本没有收到作为参数的旋转的日志文件名,而是获取了原始的日志文件名(不再存在) /var/log/exim/*log" { daily rotate 3650 delaycompress missingok notifempty nosharedscripts postrotate echo $0 $1 $2 >> /tmp/out /path/to/script $1 endscript } / tmp / out中的结果: logrotate_script /var/log/exim/main.log 我在跑 logrotate –force -v /etc/logrotate.conf 输出似乎表明它正在重命名,然后运行: renaming /var/log/exim/main.log to /var/log/exim/main.log-20160105 running postrotate script 这是在一个亚马逊Linux实例。 我已经用sharedscripts和nosharedscripts选项试了一下,没有什么区别。 我怎样才能得到旧的重命名的文件名?

systemd,logrotate和PID文件

我正在为debian 8和systemd打包一些守护进程。 守护进程可以自己创buildPID文件,但由于非root用户,它没有写入/运行的权限。 它用来通过旧的sysV init-script创buildPID文件,但是它在systemd上不起作用。 我可以像这样在服务文件中使用解决方法: Environment="PIDDIR=/var/run/mydaemon" PermissionsStartOnly=true ExecStartPre=/bin/mkdir -p $PIDDIR ExecStartPre=/bin/chown -R mydaemon. $PIDDIR 但它看起来不正确。 我可以使用/ tmp作为$ PIDDIR,但它也似乎是错误的。 实际上,我需要一个PID文件的唯一原因是logrotate的postrotate发送SIGUSR1到守护进程: [ -s /run/mydaemon.pid ] && kill -USR1 `cat /run/mydaemon.pid` 也可以使用pgrepsearch守护进程的pid,但似乎是不可靠的。 logrotate中的copytruncate似乎不是最好的select,因为丢失了部分日志的risc。 那么,通过systemdpipe理PID文件的正确方法是什么? 有没有办法通过systemd发送随机信号到守护进程?