我正在尝试将 Apache PrivateTmp 文件的清理间隔从默认的 30 天更改为 6 小时。我读到编辑时间间隔,我应该设置一个覆盖文件/etc/tmpfiles.d/tmp.conf
而不是编辑/usr/lib/tmpfiles.d/tmp.conf
,所以我用以下几行创建了该文件:
# override the default cleanup intervals
v /tmp 1777 root root 6h
v /var/tmp 1777 root root 6h
现在,如果我运行systemd-tmpfiles --clean
,预期的文件将被删除,所以这部分正在工作。
但是,/usr/lib/systemd/system/systemd-tmpfiles-clean.timer
已OnUnitActiveSec
设置为 1d。我认为这意味着我的 6 小时清理间隔将有效地限制为每天一次。
我可以将该计时器间隔更改为 6 小时或更短,但我应该直接编辑此文件,还是创建一个类似于/etc/tmpfiles.d
?
更新:这个问题被标记为重复,但我在链接的问题中没有看到任何关于我是否应该使用文件的覆盖tmp.conf
文件。
解决方案:显然我不能将此作为答案发布,因为该问题已被标记为重复。但这就是我创建覆盖文件以更改计时器间隔的方式:
将现有的计时器文件复制到相应的覆盖目录:
sudo cp /usr/lib/systemd/system/systemd-tmpfiles-clean.timer /etc/systemd/system
编辑新副本(将 1d 值更改为 1h):
sudo nano /etc/systemd/system/systemd-tmpfiles-clean.timer
加载新的计时器文件:
sudo systemctl daemon-reload
确认新的计时器间隔已加载:
sudo systemctl list-timers
这个答案有点晚了,但我会把它留在这里,以防其他人偶然发现它。
我认为了解
systemd
覆盖如何工作的底层机制很重要。您的解决方案说明您弄清楚了低级实现细节以及如何手动创建覆盖,这是一件好事。为了完整性和传播最佳实践,人们应该使用内置
systemctl
函数来创建覆盖(正如评论中提到的@muru)。例如:例如,这可以确保在文件上正确设置权限,并通过依赖底层抽象来减少引入错误的可能性。
如果要查看组成本单元的组件,请
systemctl cat
按以下方式使用: