标签: logrotate

由于文件模式错误而忽略 /etc/logrotate.conf

我怎样才能做logrotate?当我执行 logrotate 时,我看不到任何效果:

root@me-Latitude-E5550:/etc/logrotate.d# cd ..
root@me-Latitude-E5550:/etc# cd ..
root@me-Latitude-E5550:/# logrotate -d /etc/logrotate.conf
Ignoring /etc/logrotate.conf because of bad file mode.

Handling 0 logs
root@me-Latitude-E5550:/# chmod 644 /etc/logrotate.d/*
root@me-Latitude-E5550:/# cd /etc/logrotate.d
root@me-Latitude-E5550:/etc/logrotate.d# ls
apport       custom   pm-utils  speech-dispatcher    upstart
apt          dpkg     ppp       ufw
cups-daemon  lightdm  rsyslog   unattended-upgrades
root@me-Latitude-E5550:/etc/logrotate.d# cd ..
root@me-Latitude-E5550:/etc# cd ..
root@me-Latitude-E5550:/# logrotate -d /etc/logrotate.conf
Ignoring /etc/logrotate.conf because of bad file mode.

Handling 0 logs
root@me-Latitude-E5550:/# cd /var/log
root@me-Latitude-E5550:/var/log# ls -larth
total 34M
drwxrwxrwx  2 root root   4,0K Feb 18 …
Run Code Online (Sandbox Code Playgroud)

linux logs logrotate

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

为什么 selinux 策略适用于从 cronjobs 运行的命令(例如:logrotate),而不适用于直接从命令行运行的命令?

为什么 selinux 策略适用于从 cronjobs 运行的命令(例如:logrotate),而不适用于直接从命令行运行的命令?

当我从命令行手动运行 logrotate 时,它​​运行良好。但是当它从 cronjob 运行时,我在 audit.log 中收到一个错误,提醒我 selinux 阻止了对 www 的访问等。

这是为什么?以及如何模拟它从 cronjob 运行以进行测试?

logrotate selinux

7
推荐指数
1
解决办法
1120
查看次数

日志的错误统计失败:LogRotation 期间权限被拒绝

安装新的 CentOS 6.0 服务器后,logrotate 工作得非常好。然后有一天,由于内核崩溃,服务器不得不硬启动,从那时起,日志轮换不会轮换日志。

所以我做了一个单独的 cron 条目来手动和强制轮换日志并将输出重定向到一个日志文件,并为每个文件获取以下行:

rotating pattern: /home/mail3/log/popMailProcessing.log  forced from command line (60 rotations)
empty log files are rotated, old logs are removed
considering log /home/mail3/log/popMailProcessing.log
error: stat of /home/mail3/log/popMailProcessing.log failed: Permission denied
Run Code Online (Sandbox Code Playgroud)

但是,如果我从命令行手动执行 logrotation,它可以完美运行。我在命令行上使用的命令是:

logrotate -v -f /etc/logrotate.d/mail3-logs
Run Code Online (Sandbox Code Playgroud)

我的 logrotate.conf 文件是:

# see "man logrotate" for details
# 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 …
Run Code Online (Sandbox Code Playgroud)

logrotate

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

在 Debian 上保留 X 日志文件的副本

我最近尝试将我的 Nvidia 驱动程序替换为我的 Nvidia 卡的 Nouveau 驱动程序,(请参阅从 Nvidia 专有驱动程序切换到 Debian wheezy 上的 Nvidia 卡的 Nouveau 驱动程序)。

不幸的是,这次尝试失败并被烧毁,所以我中止了它。然而,在我重新启动到我的习惯配置并且烟雾消散之后,我发现了一些我已经知道的事情,即 Debian 只保留一份 X 服务器日志的副本,即/var/log/Xorg.0.log. 因此,我转向 Nouveau 的不幸尝试的日志已经丢失。

所以,我的问题是,如何更改 Debian 的配置以保留 X 日志文件的旧副本?:

我认为这种逻辑是由 logrotate 处理的,但是我可以看到/etc/logrotate.conf/etc/logrotate.d/对此没有任何具体的逻辑。只是在那里添加一些东西吗?如果是这样,我想知道为什么它已经不在了。

logrotate debian x11

6
推荐指数
1
解决办法
779
查看次数

仅使用 logrotate 删除文件

我有一个应用程序,它每小时轮换自己的日志文件。每小时我都想删除所有超过n几天的文件。logrotate由于商业政策,我必须使用此方法。

那么logrotate每小时运行这个命令相当于什么呢?

find /var/log/app -name "*.old" -mtime +1 -exec rm -f {} \;
Run Code Online (Sandbox Code Playgroud)

logrotate

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

如何 tar-gz 目录中超过 28 天的所有文件?

每天我都在删除文件夹中的日志文件。

find ~/folder -mtime +28 -type f -delete
Run Code Online (Sandbox Code Playgroud)

现在我想存档和压缩受上述删除命令影响的所有文件,并将此 tar.gz 存储在新目录 folder2 中。

所以让我们假设:

~/folder:
  - x1 (3 days old)
  - x2 (3 days old)
  - y1 (29 days old)
  - y2 (29 days old)

~/folder2:
  - genericname1.tar.gz: (some already present archive)
    - ...
Run Code Online (Sandbox Code Playgroud)

归档、压缩和删除

~/folder:
  - x1
  - x2

~/folder2:
  - genericname1.tar.gz:
    - ...
  - genericname2.tar.gz:
    - y1
    - y2
Run Code Online (Sandbox Code Playgroud)

logrotate

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

Logrotate:使用旋转文件运行 postrotate 脚本

我正在使用logrotatewith轮换日志文件copytruncate,我需要运行一个以新文件名作为参数的脚本。我知道我可以使用$1inside postrotate,但这给了我旋转文件的名称 - 而不是带有日期扩展名的文件。

所以基本上我有:

/var/log/myapp/server.log

当我运行这个 logrotate 配置时:

/var/log/myapp/server.log {
  copytruncate
  rotate 1008
  dateext
  dateformat -%s
  create 660 syslog syslog
  postrotate
    python3 /opt/myapp/test.py $1 > /dev/null
  endscript
}
Run Code Online (Sandbox Code Playgroud)

我得到

/var/log/myapp/server.log <-- (now empty)
/var/log/myapp/server.log-1536844088
Run Code Online (Sandbox Code Playgroud)

我可以以/var/log/myapp/server.log-1536844088某种方式在 postrotate上运行脚本吗?

linux logrotate

6
推荐指数
1
解决办法
9889
查看次数

logrotate 是如何工作的?

我真的很难理解logrotate在我自己的 shell 文件中运行命令时是如何工作的,以及它是如何工作的。

有问题的命令是:

rclone -L -vv --log-file "/home/mike/tmp/qqq.log"  sync "/media/mike/W10 D drive/My Documents/"  remote:MyDocuments_M17A_from_Linux
Run Code Online (Sandbox Code Playgroud)

我想要什么:

我希望经常检查这个 qqq.log 文件,比如每 10 分钟一次,看看它是否超过了给定的大小,比如 1 MB。如果有,旋转文件。rclone使用该-vv选项会故意产生大量输出(即尝试理解让 logrotate 为这个用例工作)。

有一个适度有用的教程在这里,但它仍然让我在黑暗中:

  1. 您打算如何配置来自您自己的非系统进程的日志轮换?你的意思是在底部贴线/etc/logrotate.conf吗?这就是我所做的(在“#system-specific logs may be configured here”下):

    /home/mike/tmp/qqq.log {
      notifempty
      size 1M
      daily
      create 0664 root root
      rotate 3
    }
    
    Run Code Online (Sandbox Code Playgroud)

    后来:我现在意识到您也可以放入单个文件/etc/logrotate.d- 没有太大的复杂性。

  2. 是不是默认情况下logrotate每天只运行一次,凭借文件/etc/cron.daily/logrotate

  3. 这是否意味着如果我想要更频繁的检查,我可能应该设置一个cron作业来执行此操作,每 10 分钟运行一次(在本例中)?

  4. 你打算以logrotate <config file>root身份运行吗?我问这个问题是因为我以 root 和用户身份都尝试过。用户似乎没有工作。

指向此类设置的初学者指南的链接(这很常见)会有所帮助。我已经搜索过,但我发现的大部分内容都没有为您提供分步指南。

logs logrotate

6
推荐指数
1
解决办法
3299
查看次数

调整 logrotate 以使用 xz 来记录日志

在当前的 Debian 测试机器上,我想使用 xz 而不是 GZip 来压缩日志文件。它具有较高的开箱即用压缩率,因此我希望使用它。

但是,每当我在 logrotate 配置中指定它时,logrotate 就会说它无法用于xz压缩。它只是说该文件无法执行,即使它在系统和用户 shell 中的其他任何地方都可以工作。

有什么办法可以调试这个吗?

logrotate debian xz

6
推荐指数
1
解决办法
2324
查看次数

logrotate 写入旧的 app.log.1 而不是 app.log

我们有一个使用 syslog 进行日志记录的自定义应用程序,现在我们面临 logrotate 的问题,日志正在写入 urls.log.1 而不是 urls.log ,logrotate 在旋转后不会创建 url.log。我们正在使用Ubuntu 14.04 LTS 服务器。我们如何强制 logrotate 在旋转后创建 urls.log ?

logrotate 配置(/etc/logrotate.d/rsyslog)

/usr/local/app/log/urls.log
{
        rotate 10
        daily
        missingok
        notifempty
        compress
        delaycompress
        sharedscripts
        su app app
        postrotate
                reload rsyslog >/dev/null 2>&1 || true
        endscript
}
Run Code Online (Sandbox Code Playgroud)

如果我手动 mv urls.log.1 到 urls.log 并运行 force logrotate ,这将是输出

considering log /usr/local/app/log/urls.log
  log needs rotating
rotating log /usr/local/app/log/urls.log, log->rotateCount is 10
dateext suffix '-20170228'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
compressing log with: /bin/gzip
switching uid to 1000 and gid to …
Run Code Online (Sandbox Code Playgroud)

linux logs logrotate rsyslog syslog

5
推荐指数
1
解决办法
5920
查看次数

标签 统计

logrotate ×10

linux ×3

logs ×3

debian ×2

rsyslog ×1

selinux ×1

syslog ×1

x11 ×1

xz ×1