logrotate 通配符的值

Value of logrotate wild card

假设我有一个如下所示的 logrotate 配置文件:

"/data/logs/*.log" {
  daily
  rotate 5
  compress
  missingok
  notifempty
  prerotate
    echo "file name is: <file_name>"
  endscript
}

prerotate 中,我想执行一个我需要知道通配符值的命令。为了这个问题,假设我的命令非常简单,只是通配符值的 echo

如何在不为通配符的每个可能值创建单独的配置定义的情况下执行此操作?有没有办法指向通配符的值?

要运行 prerotate 为每个文件而不是为整个组只添加一次,您需要添加nosharedscripts 选项。然后文件名作为第一个参数传递给脚本,所以如果你有一个像

这样的脚本
#!/usr/bin/env bash
echo ""

那么你应该可以使用这个:

"/data/logs/*.log" {
  daily
  rotate 5
  compress
  missingok
  notifempty
  nosharedscripts
  prerotate
    /path/to/your/script
  endscript
}