tmpfiles.d——“x”和“X”选项之间的区别?

tmpfiles.d——“x”和“X”选项之间的区别?

我正在 CentOS 7 上配置 tmp 清理。文档X对于 tmpfiles 来说,在解释和x选项之间的区别时,我有点不清楚tmp.conf。根据文档,区别在于X使用选项,

与 不同x,如果路径是目录,此参数将不会排除内容,而只会排除目录本身。

我不确定该如何解释这一点。

基本上我有一个目录,它存在于其中/tmp,并且我想要删除(包括其内容)。为此,只需添加一行

x /tmp/myspecialdir

/usr/lib/tmpfiles.d/tmp.conf

答案1

我也觉得这很令人困惑。下面是一个简单的例子。我认为,如果您在特定目录中有一个深层树,并且您想删除部分目录而不是所有目录,那么 x versus X 会很有用。

这是我的 exclude.conf:

root# cat /etc/tmpfiles.d/exclude.conf 
d /tmp/testdir 0755 root root 1s
x /tmp/testdir/*

现在,我创建一些目录:

# mkdir /tmp/testdir/a ; mkdir /tmp/testdir/b; mkdir /tmp/testdir/ab

# ls -lrt /tmp/testdir/
total 0
drwxr-xr-x. 2 root root 6 Sep  1 12:55 a
drwxr-xr-x. 2 root root 6 Sep  1 12:55 b
drwxr-xr-x. 2 root root 6 Sep  1 12:55 ab

运行清洁

#systemd-tmpfiles --clean exclude.conf

查看

# ls -lrt /tmp/testdir
total 0
drwxr-xr-x. 2 root root 6 Sep  1 12:55 a
drwxr-xr-x. 2 root root 6 Sep  1 12:55 b
drwxr-xr-x. 2 root root 6 Sep  1 12:55 ab

现在,如果执行X /tmp/testdir/*,我会得到相同的结果。然后,如果我有x /tmp/testdir/b,那么它会从清理中排除“b”目录。

#systemd-tmpfiles --clean exclude.conf

# ls -lrt /tmp/testdir/
total 0
drwxr-xr-x. 2 root root 6 Sep  1 12:55 b

此外,X /tmp/testdir/b显示相同的行为。但是,X /tmp/testdir/x /tmp/testdir将删除其中的所有子目录testdir,但会保留testdir

我建议在设置之前先测试一下设置。手册页应该更清楚一些。

相关内容