在Linux中自动清除未使用的临时文件
如何在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