标签: logrotate

如何使日志轮换更改生效

我按照此链接更改了 RHEL 6 的日志轮换配置

对配置文件进行更改后,我该怎么做才能使其生效?

linux logrotate syslog

135
推荐指数
4
解决办法
29万
查看次数

如何对日志轮换文件执行`tail -f`?

在长时间运行的系统上,我通常有一个终端

$ tail -f /var/log/kern.log
Run Code Online (Sandbox Code Playgroud)

或类似的东西打开。

但有时我必须重新启动此类命令,因为不再显示新消息。

我认为这是因为替换日志文件的日志轮换作业tail -f正在“观察”。

如何避免这种重启问题?

我可以调用tail这样它注意到旋转过程并做正确的事情吗?

(我在rsyslogd默认使用的 Ubuntu 11.04 系统上注意到了这个问题。)

logs logrotate rsyslog tail

124
推荐指数
1
解决办法
4万
查看次数

Logrotate:“日志不需要旋转”为什么?

我有以下新的 logrotate 配置:

/var/log/nexus/nexus.log {
    rotate 7
    missingok
    compress
    delaycompress
    copytruncate
    daily
}
Run Code Online (Sandbox Code Playgroud)

当我运行时logrotate -d nexus,我得到以下信息:

reading config file nexus
reading config info for /var/log/nexus/nexus.log

Handling 1 logs

rotating pattern: /var/log/nexus/nexus.log  after 1 days (7 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/nexus/nexus.log
  log does not need rotating
Run Code Online (Sandbox Code Playgroud)

我的 /var/log/nexus/ 文件夹包含以下内容:

nexus.log
oldlogs.tar.gz
Run Code Online (Sandbox Code Playgroud)

为什么 LogRotate 不旋转 nexus.log 文件?我期待的是 nexus.log 文件会被截断,并且会创建一个新文件,比如 nexus.log-201106241000。

logrotate

63
推荐指数
3
解决办法
7万
查看次数

为什么我们应该一起使用 create 和 copytruncate ?

Geek Stuff有一个关于logrotate. copytruncate将复制并截断原始日志文件。

那我们为什么要使用create?原始日志文件尚未删除。

/tmp/output.log {
  size 1k
  copytruncate
  create
  compress
  compresscmd /bin/bzip2
  compressext .bz2
  rotate 4
  maxage 100
}
Run Code Online (Sandbox Code Playgroud)

另一个问题是有什么用maxage 100?该rotate 4指令将在 4 次轮换后删除旧的日志文件。

logrotate

47
推荐指数
1
解决办法
11万
查看次数

如何设置 logrotate 以每小时轮换日志?

根据Unix和Linux管理手册和man,logrotate的有选项dailyweekly以及monthly,但有一种方法来添加一个hourly选项?

本博客文章中提到,您可以设置size 1和删除的时间选项(如:daily),然后手动调用logrotatecron-我想是这样

logrotate -f /etc/logrotate.d/my-hourly-file
Run Code Online (Sandbox Code Playgroud)

但是有没有更优雅的每小时轮换日志的解决方案?

linux logrotate

28
推荐指数
2
解决办法
6万
查看次数

旋转日志时如何避免apache重新加载?

我使用 logrotate 来轮换 Apache 访问、错误和重写日志。我的配置文件如下所示:

/apache/*log {
    compress
    dateext
    rotate 365
    size=+300M
    olddir /log/old/apache
    notifempty
    missingok
    lastaction
     /bin/apache reload
    endscript
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,每当发生轮换时,都必须重新加载 Apache,因为 Apache 不会在刚刚轮换的日志文件中写入任何内容。有没有办法避免每次 logrotate 进行轮换时 Apache 重新加载?

logrotate apache-httpd

27
推荐指数
2
解决办法
4万
查看次数

在进程仍在运行时轮换日志文件

我有一个正在运行的进程,它将标准输出和标准错误写入日志文件/var/log/dragonturtle.log。无论如何要轮换日志文件,并让进程继续写入新的日志文件而不终止进程?

当前发生了什么(鉴于下面的 logrotate 配置):

  • 进程写入 /var/log/dragonturtle.log
  • Logrotate 移动/var/log/dragonturtle.log/var/log/dragonturtle.log.1
  • 进程继续写入 /var/log/dragonturtle.log.1

我想发生什么:

  • 进程写入 /var/log/dragonturtle.log
  • Logrotate 副本/var/log/dragonturtle.log/var/log/dragonturtle.log.1
  • 对数旋转截断 /var/log/dragonturtle.log
  • 进程继续写入 /var/log/dragonturtle.log

/etc/logrotate.d/dragonturtle

/var/log/dragonturtle.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    create 644 dragonturtle dragonturtle
}
Run Code Online (Sandbox Code Playgroud)

logs logrotate stdout

22
推荐指数
1
解决办法
1万
查看次数

如何在shell脚本中实现logrotate

测试文件

#!/bin/bash
echo "Hello World"
Run Code Online (Sandbox Code Playgroud)

测试2.sh

#!/bin/bash
while true
do
    sh test.sh >> /script_logs/test.log &
done
Run Code Online (Sandbox Code Playgroud)

我想实现logrotate来控制日志文件的大小,那么如何实现logrotate,如果是上面的情况呢?

scripting bash logrotate

18
推荐指数
2
解决办法
6万
查看次数

logrotation - 旋转和 maxage 命令

任何人都可以向我解释 logrotation 中 'rotate' 和 'maxage' 的功能,因为这非常令人困惑。

考虑在我的脚本中使用以下值:

rotate 30
maxage 30
Run Code Online (Sandbox Code Playgroud)

谢谢..

logrotate

14
推荐指数
1
解决办法
2万
查看次数

如何通过“file:”配置正确记录由 systemd 管理的服务日志

我有一个由 systemd 管理的服务,它具有以下 systemd 配置,告诉 systemd 将日志直接写入文件(没有 syslog 或任何内容)

StandardOutput=file:/var/log/foo/my.log
Run Code Online (Sandbox Code Playgroud)

我有一个 logrotate 规则

/var/log/foo/*.log
{
        rotate 31
        daily
        missingok
        notifempty
        compress
        delaycompress
        sharedscripts
}
Run Code Online (Sandbox Code Playgroud)

发生的情况是日志正在轮换,但服务仍在写入旧的轮换文件,而新日志文件仍为空。

我有一个类似的工作设置,其中服务写入系统日志。这个工作正常,因为 logrotate 配置有

postrotate
                invoke-rc.d rsyslog rotate > /dev/null
Run Code Online (Sandbox Code Playgroud)

,它通知 syslog 它的日志已被轮换。

问题是,在我有问题的情况下,日志直接发送到文件,因此我不知道是否(或哪一个)需要向 systemd 或实际服务进程发送类似的信号。

copytruncate在 logrotate 中找到了这个选项,我很确定它会解决我的问题,但我感觉这不是理想的方法,否则copytruncate将是 logrotate 的默认行为。

我该如何解决这个问题?我需要向 systemd 发送一些信号吗?我需要向服务进程发送一些信号吗?我必须copytruncate在 logrotate 中使用吗?
如果重要的话,该服务是一个使用 logback 写入 stdout 的 java 进程

logs logrotate systemd

14
推荐指数
1
解决办法
8050
查看次数

标签 统计

logrotate ×10

logs ×3

linux ×2

apache-httpd ×1

bash ×1

rsyslog ×1

scripting ×1

stdout ×1

syslog ×1

systemd ×1

tail ×1