tmpfiles.d 可以仅根据时间删除文件(但不能在启动时删除)吗?

tmpfiles.d 可以仅根据时间删除文件(但不能在启动时删除)吗?

有没有办法使用 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

它不应该导致目录内容被删除。请参阅文档dD选项,其中指出:

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已被删除。)

相关内容