假设我有一个 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 "$1"
那么你应该能够使用它:
"/data/logs/*.log" {
daily
rotate 5
compress
missingok
notifempty
nosharedscripts
prerotate
/path/to/your/script
endscript
}