![tmpfiles.d 可以仅根据时间删除文件(但不能在启动时删除)吗?](https://linux22.com/image/141834/tmpfiles.d%20%E5%8F%AF%E4%BB%A5%E4%BB%85%E6%A0%B9%E6%8D%AE%E6%97%B6%E9%97%B4%E5%88%A0%E9%99%A4%E6%96%87%E4%BB%B6%EF%BC%88%E4%BD%86%E4%B8%8D%E8%83%BD%E5%9C%A8%E5%90%AF%E5%8A%A8%E6%97%B6%E5%88%A0%E9%99%A4%EF%BC%89%E5%90%97%EF%BC%9F.png)
有没有办法使用 systemd tmpfiles.d 仅根据时间进行清理,而不是在启动时进行清理?
我尝试过“d”和“D”,例如
#/etc/tmpfiles.d/tmp.conf
d /var/tmp 1777 root root 30d
和
#/etc/tmpfiles.d/tmp.conf
D /var/tmp 1777 root root 30d
但它们都会导致文件在启动时被清除。
仅供参考,我正在运行 Debian 9 (Stretch)。如果使用默认配置文件,tmpfiles.d 不会从 /var/tmp 中删除文件(在启动时或按年龄)。
答案1
您的第一行是正确的:
#/etc/tmpfiles.d/tmp.conf
d /var/tmp 1777 root root 30d
它不应该导致目录内容被删除。请参阅文档d
和D
选项,其中指出:
d
创建一个目录。如果指定并且目录已存在,则模式和所有权将被调整。如果指定了 Age 参数,则此目录的内容将受到基于时间的清理。
D
与 --remove 类似
d
,但使用 --remove 时,目录的内容将被删除。
这可能与系统中已存在的另一个配置冲突(中提供的文件之一/usr/lib/tmpfiles.d/*.conf
)
tmp.conf
另外,请注意,如果您创建一个名为in 的文件/etc/tmpfiles.d/
,则您将隐藏同名的文件/usr/lib/tmpfiles.d/tmp.conf
(如果存在的话)(systemd 通常会传送此文件),因此您可能会无意中删除您想要保留的配置。 (然后,这也是删除该配置的方法,以便您可以覆盖。)
如果您的 systemd 版本足够新,您可以尝试以下命令systemd-tmpfiles --cat-config
查看完整配置,这可能会帮助您查看可能/var/tmp
造成干扰的其他意外行,或者在删除新配置文件时比较“之前”与“之后”(例如,显示配置文件中的行)中的同名/usr
已被删除。)