我正在寻找一个脚本,允许我以编程方式修改 logrotate 配置文件。至少我希望它能够替换诸如
/var/log/wtmp {
missingok
monthly
create 0664 root utmp
rotate 1
}
使用命令行或通过 stdin 或通过文件(我不在乎哪个)给出的新块。它必须能够对任意配置文件进行操作。
如果它能够充分理解配置,我就可以这样说
logrotateupdate /etc/logrotate.conf /var/log/wtmp weekly
并让它做正确的事情(在上面的例子中,删除每月并将其替换为每周)。
这也许是别人常知的事情,但我却是从未见过的。
我的系统是linux(Ubuntu)。
答案1
奥杰阿斯是实现此目的的工具,但学习难度相当高。以下是如何设置/var/log/wtmp
每周轮换(/etc/logrotate.conf
为简洁起见,部分内容已删减):
[root@dev ~]# cat /etc/logrotate.conf
# trimmed
# no packages own wtmp -- we'll rotate them here
/var/log/wtmp {
monthly
minsize 1M
create 0664 root utmp
rotate 1
}
[root@dev ~]# (echo "set \
/files/etc/logrotate.conf/rule[file='/var/log/wtmp']/schedule weekly"; \
echo save) | augtool
Saved 1 file(s)
[root@dev ~]# cat /etc/logrotate.conf
# trimmed
# no packages own wtmp -- we'll rotate them here
/var/log/wtmp {
weekly
minsize 1M
create 0664 root utmp
rotate 1
}
有镜头(如文件结构的描述)用于许多配置文件。一旦您了解了一切工作原理,编写新镜头就不会太难。
Augeas 也与木偶制作一个非常强大的配置管理系统。
答案2
除了 markdrayton 的回答之外,我还要补充一点,Augeas 现在可以用作解释器,因此您实际上可以编写一个包含以下内容的可执行脚本:
#!/usr/bin/augtool -f
set /files/etc/logrotate.conf/rule[file='/var/log/wtmp']/schedule weekly
save
并执行它。你甚至可以使用自动保存选项 ( ) 使其更短-s
:
#!/usr/bin/augtool -sf
set /files/etc/logrotate.conf/rule[file='/var/log/wtmp']/schedule weekly