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')/
有什么方法可以将命令的输出传递date
给olddir
选项吗?
答案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')/