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

时间:2020-02-23 14:37:40  来源:igfitidea点击:

如何在Linux中删除/清洁未使用的文件?
在本文中,我们将学习如何配置管理临时文件的计时器。
在大多数现代Linux系统中,最佳处理需要大量临时文件和目录。
累积,如果不经常清洁,它们可以消耗千兆字节的存储空间。
因此,有必要吹扫旧文件,以便它们不会填满磁盘空间。

一些用户/应用程序将使用/tmp目录保存临时数据,而其他用户则使用更多的任务特定位置,例如/运行/运行守护程序和特定于用户特定的易失性目录。
易失性意味着文件只存在于内存中。
如果系统重新启动或者存在丢失的电源时,所有易失性存储的内容都将消失。

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

在Red Hat Enterprise Linux 7及更高版本中,包括一个名为SystemD-TMPFiles的新工具。
此工具提供了一种结构化和可配置的方法来管理临时目录和文件。

我们可以查看使用该命令启动的服务:

$systemctl status  systemd-tmpfiles-*
● systemd-tmpfiles-setup.service - Create Volatile Files and Directories
   Loaded: loaded (/usr/lib/systemd/system/systemd-tmpfiles-setup.service; static; vendor preset: disabled)
   Active: active (exited) since Mon 2017-02-10 08:27:50 EAT; 1 weeks 3 days ago
     Docs: man:tmpfiles.d(5)
           man:systemd-tmpfiles(8)
  Process: 794 ExecStart=/usr/bin/systemd-tmpfiles --create --remove --boot --exclude-prefix=/dev (code=exited, status=0/SUCCESS)
 Main PID: 794 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/systemd-tmpfiles-setup.service
Nov 10 08:27:50 envoy-nginx.novalocal systemd[1]: Starting Create Volatile Files and Directories...
Nov 10 08:27:50 envoy-nginx.novalocal systemd[1]: Started Create Volatile Files and Directories.
● systemd-tmpfiles-setup-dev.service - Create Static Device Nodes in /dev
   Loaded: loaded (/usr/lib/systemd/system/systemd-tmpfiles-setup-dev.service; static; vendor preset: disabled)
   Active: active (exited) since Mon 2017-02-10 08:27:49 EAT; 1 weeks 3 days ago
     Docs: man:tmpfiles.d(5)
           man:systemd-tmpfiles(8)
  Process: 553 ExecStart=/usr/bin/systemd-tmpfiles --prefix=/dev --create --boot (code=exited, status=0/SUCCESS)
 Main PID: 553 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/systemd-tmpfiles-setup-dev.service
Nov 10 08:27:49 envoy-nginx.novalocal systemd[1]: Starting Create Static Device Nodes in /dev...
Nov 10 08:27:49 envoy-nginx.novalocal systemd[1]: Started Create Static Device Nodes in /dev.

启动SystemD-TMPFILES-SETUP服务单元时,它会运行systemd-tmpfiles -create -remove命令。
命令检查配置文件:/usr/lib/tmpfiles.d/.conf/run/tmpfiles.d/.conf/etc/tmpfiles.d/*。

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

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

一个名为systemd-tmpfiles-clean.timer的系统定时器单元触发systemd-tmpfiles-clean.service常规间隔,然后执行systemd-tmpfiles -clean命令。

我们将指定在[定时器]部分中应启动服务的频率。
请参见下面的示例。

$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-Serfice。
最后一次服务触发后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

如果要确保使用正确的纯存在DirectoTy,请创建如下配置。

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