nginx-我陷入了logrotate之谜

前端之家收集整理的这篇文章主要介绍了nginx-我陷入了logrotate之谜 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有两个logrotate文件

/etc/logrotate.d/Nginx-size

/var/log/Nginx/*.log 
/var/log/www/Nginx/50x.log

{
    missingok
    rotate 3
    size 2G
    dateext
    compress
    compresscmd /usr/bin/bzip2
    compressoptions -6
    compressext .bz2
    uncompresscmd /usr/bin/bunzip2
    notifempty
    create 640 Nginx Nginx
    sharedscripts
    postrotate
        [ -f /var/run/Nginx.pid ] && kill -USR1 `cat /var/run/Nginx.pid`
    endscript
}

/etc/logrotate.d/Nginx-daily

/var/log/Nginx/*.log 
/var/log/www/Nginx/50x.log

{
    missingok
    rotate 3
    dateext
    compress
    compresscmd /usr/bin/bzip2
    compressoptions -6
    compressext .bz2
    uncompresscmd /usr/bin/bunzip2
    notifempty
    create 640 Nginx Nginx
    sharedscripts
    postrotate
        [ -f /var/run/Nginx.pid ] && kill -USR1 `cat /var/run/Nginx.pid`
    endscript
}

命令logrotate -d -v /etc/logrotate.d/Nginx-sizeoutput:

reading config file /etc/logrotate.d/Nginx-size
compress_prog is now /usr/bin/bzip2
compress_options is now  -6
compress_ext is now .bz2
uncompress_prog is now /usr/bin/bunzip2

Handling 1 logs

rotating pattern: /var/log/Nginx/*.log 
/var/log/www/Nginx/50x.log

 2147483648 bytes (3 rotations)
empty log files are not rotated,old logs are removed
considering log /var/log/Nginx/access.log
  log does not need rotating
considering log /var/log/Nginx/error.log
  log does not need rotating
considering log /var/log/Nginx/get.access.log
  log does not need rotating
considering log /var/log/Nginx/post.access.log
  log needs rotating
considering log /var/log/www/Nginx/50x.log
  log does not need rotating
rotating log /var/log/Nginx/post.access.log,log->rotateCount is 3
dateext suffix '-20141204'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
glob finding old rotated logs Failed
renaming /var/log/Nginx/post.access.log to /var/log/Nginx/post.access.log-20141204
creating new /var/log/Nginx/post.access.log mode = 0640 uid = 497 gid = 497
running postrotate script
running script with arg /var/log/Nginx/*.log 
/var/log/www/Nginx/50x.log

: "
        [ -f /var/run/Nginx.pid ] && kill -USR1 `cat /var/run/Nginx.pid`
"
compressing log with: /usr/bin/bzip2

每天在ngnix上输出相同(正常)的输出.

如果我从root命令运行

logrotate -f /etc/logrotate.d/Nginx-size 

手动完成所有事情.但!它不会自动运行!

contab:

*/5 5-23 * * * root logrotate -f -v /etc/logrotate.d/Nginx-size 2>&1 > /tmp/logrotate_size   
00 04 * * * root logrotate -f -v /etc/logrotate.d/Nginx-daily 2>&1 > /tmp/logrotate_daily

另外,文件/ tmp / logrotate_daily& / tmp / logrotate_size始终为空.

Cron在/ var / log / cron中没有给我任何错误

Dec  4 14:45:01 (root) CMD (logrotate -f -v /etc/logrotate.d/Nginx-rz-size 2>&1 > /tmp/logrotate_size   )
Dec  4 14:50:01 (root) CMD (logrotate -f -v /etc/logrotate.d/Nginx-rz-size 2>&1 > /tmp/logrotate_size   )

dat事情怎么了?.. Centos 6.5 x86_64,Logrotate版本3.8.7(源代码外)logrotate版本3.7.8(通过rpm).

提前谢谢.

最佳答案
您的重定向在这些cron行中不正确.他们不会将错误信息输出到那些文件.

重定向顺序很重要.您想要> / tmp / logrotate_size 2>& 1获得所需的内容.

这里的根本问题是信息页面的“调试crontab”部分涵盖的内容之一.

即“对环境做出假设”.

@H_301_76@

Making assumptions about the environment

Graphical programs (X11 apps),java programs,ssh and sudo are notorIoUsly problematic to run as cron jobs. This is because they rely on things from interactive environments that may not be present in cron’s environment.

To more closely model cron’s environment interactively,run

env -i sh -c ‘yourcommand’

This will clear all environment variables and run sh which may be more meager in features that your current shell.

Common problems uncovered this way:

foo: Command not found or just foo: not found.

Most likely $PATH is set in your .bashrc or similar interactive init file. Try specifying all commands by full path (or put source ~/.bashrc at the start of the script you’re trying to run).

猜你在找的Nginx相关文章