将 shell 命令作为 logrotate olddir 路径的一部分传递

将 shell 命令作为 logrotate olddir 路径的一部分传递

olddir由于我按时间顺序组织我的档案(显然!),因此我尝试将自定义格式的日期作为 logrotate 配置中路径的一部分传递。

这就是我要传递的内容olddir

olddir /path/to/archive/$(date --date='-1 day' +'%Y/%m-%b')/

运行logrotate -d(调试模式)抛出此错误:

error: /etc/logrotate.d/my-logrotate-config:15 bad olddir path /path/to/archive/$(date --date='-1 day' +'%Y/%m-%b')/

有什么方法可以将命令的输出传递dateolddir选项吗?

答案1

这种方式行不通,因为我们无法将 olddir 作为开关传递给 logrotate 命令(这会使它可被 bash 解释)。logrotate 配置文件不通过 shell 运行,因此我们不能在其中使用 shell 约定。除了注释等内容外,其中的所有内容都是文字。

您可以做的是将 logrotate 记录到一个公共目录(必须在 logrotate.conf 文件中静态定义),然后立即移动,如下所示,但也许比我写的更好:

#!/bin/bash logrotate mkdir /path/to/archive/$(date --date='-1 day' +'%Y/%m-%b')/ mv /path/to/common/logrotate/dumping/ground/* /path/to/archive/$(date --date='-1 day' +'%Y/%m-%b')/

相关内容