云网牛站
所在位置:首页 > Linux教程 > 使用systemd-tmpfiles在Linux中自动清除未使用的临时文件

使用systemd-tmpfiles在Linux中自动清除未使用的临时文件

2020-02-22 10:08:42作者:秦风稿源:云网牛站

本文介绍使用systemd-tmpfiles以在Linux操作系统中自动清除未使用的临时文件。在大多数现代Linux系统中,需要大量临时文件和目录才能进行最佳处理,如果不经常清理,它们可能会累积使用更多的存储空间,因此,有必要清除旧文件,以免它们占用磁盘空间。另外,一些用户/应用程序将使用/tmp目录来保存临时数据,而其他用户/应用程序将使用特定的位置,例如守护进程和/run下的用户特定目录,文件仅存在于内存中,如果系统重新启动或断电,这些存储的所有内容都将消失。

 

在Linux中自动清除未使用的临时文件

在Red Hat Enterprise Linux 7和更高版本中,包含了一个称为systemd-tmpfiles的新工具,该工具提供了一种结构化且可配置的方法来管理临时目录和文件。

可以使用以下命令检查启动服务:

$ systemctl status  systemd-tmpfiles-*

使用systemd-tmpfiles在Linux中自动清除未使用的临时文件

启动systemd-tmpfiles-setup服务单元时,它将运行systemd-tmpfiles –create –remove命令,该命令从以下位置检查配置文件:

/usr/lib/tmpfiles.d/.conf

/run/tmpfiles.d/.conf

/etc/tmpfiles.d/*.conf

如果上述配置文件中有标记为删除的文件和目录,则会将其删除,对于标记为创建的文件和目录,必要时使用正确的权限创建它们。

技术延伸:用find、rm命令清理Linux临时文件夹及检查Linux临时文件夹何时已满

 

使用Systemd计时器清除临时文件

一个名为systemd-tmpfiles-clean.timer的systemd计时器单元会按固定的时间间隔触发systemd-tmpfiles-clean.service,然后执行systemd-tmpfiles -clean命令。

将在[Timer]选项中指定启动服务的频率,请参见下面的示例:

$ cat /usr/lib/systemd/system/systemd-tmpfiles-clean.timer

#  This file is part of systemd.

#

#  systemd is free software; you can redistribute it and/or modify it

#  under the terms of the GNU Lesser General Public License as published by

#  the Free Software Foundation; either version 2.1 of the License, or

#  (at your option) any later version.

[Unit]

Description=Daily Cleanup of Temporary Directories

Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)

[Timer]

OnBootSec=15min

OnUnitActiveSec=1d

在上面的示例中,系统启动后15分钟将触发systemd-tmpfiles-clean.service,其他任何触发都在上次服务触发后24小时发生,可以根据自己的情况调整值。

如果进行更改,请确保重新加载服务:

sudo systemctl daemon-reload

sudo systemctl enable --now systemd-tmpfiles-clean.timer

 

手动清理临时文件

让我们配置systemd-tmpfiles来清理/mytmp目录,这将确保目录不包含最近3天未使用过的文件。

可以复制示例配置/usr/lib/tmpfiles.d/tmp.conf文件并进行更新。

如下编辑文件:

$ sudo vim /etc/tmpfiles.d/mytmp.conf

See tmpfiles.d(5) for details

# Clear tmp directories separately, to make them easier to override

q /mytmp 1777 root root 3d

如果要确保拥有正确所有权的直接性,请创建如下配置:

d /run/mytmp 0700 root root 60s

必须清除该目录中最近60秒钟内未使用的任何文件。

创建文件后,使用以下命令确保文件包含适当的配置:

sudo systemd-tmpfiles --create /etc/tmpfiles.d/mytmp.conf

如果在输出中看不到任何错误,则表明配置设置正确,可以随时使用以下命令调用手动清理:

systemd-tmpfiles --clean /etc/tmpfiles.d/mytmp.conf

 

相关主题

Systemd入门教程

精选文章
热门文章