建设人才网站,沈阳建设银行网站,wordpress page 父页面,网站运营与管理期末考试tmpfile 使用介绍
1 介绍
很多情况下#xff0c;需要系统自动识别/tmp、/var/tmp下的临时目录#xff0c;并将其自动清理其中的过期文件。这个工具就是systemd-tmpfiles。
网上很多博客使用tmpwatchcron的方法来管理临时文件和临时存放文件的目录#xff0c;在后期的版本…tmpfile 使用介绍
1 介绍
很多情况下需要系统自动识别/tmp、/var/tmp下的临时目录并将其自动清理其中的过期文件。这个工具就是systemd-tmpfiles。
网上很多博客使用tmpwatchcron的方法来管理临时文件和临时存放文件的目录在后期的版本中都已经修改为使用systemd-tmpfilessystemd-tmpfiles-timers替换早期版本。
2 systemd-tmpfiles
systemd提供了一个结构化的可配置方法来管理临时文件和目录即systemd-tmpfiles可以创建、删除和管理临时文件的服务。旧版本系统使用watchtmpcron来共同实现管理临时文件。
systemd启动后其中一个启动的服务单元是systemd-tmpfiles-setup该服务的命令为:systemd-tmpfiles --creat/–clean *conf , *conf是可选的不写默认是使用所有配置文件。 /etc/tmpfiles.d/*conf 管理员可修改的配置文件 /run/tmpfiles.d/*conf daemon应用程序自己管理的配置文件不建议更改 /usr/lib/tmpfiles.d/*confrpm软件安装时自动更新的配置文件不能更改
3 查看服务状态 systemctl status systemd-tmpfiles* ● systemd-tmpfiles-setup-dev.service - Create Static Device Nodes in /dev Loaded: loaded (/lib/systemd/system/systemd-tmpfiles-setup-dev.service; static; vendor preset: enabled) Active: active (exited) since Tue 2023-01-31 15:37:13 CST; 6 days ago Docs: man:tmpfiles.d(5) man:systemd-tmpfiles(8) Process: 332 ExecStart/bin/systemd-tmpfiles --prefix/dev --create --boot (codeexited, status0/SUCCESS) Main PID: 332 (codeexited, status0/SUCCESS) Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable. ● systemd-tmpfiles-clean.timer - Daily Cleanup of Temporary Directories Loaded: loaded (/lib/systemd/system/systemd-tmpfiles-clean.timer; static; vendor preset: enabled) Active: active (waiting) since Tue 2023-01-31 15:37:15 CST; 6 days ago Trigger: Tue 2023-02-07 15:52:14 CST; 23h left Docs: man:tmpfiles.d(5) man:systemd-tmpfiles(8) Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable. ● systemd-tmpfiles-setup.service - Create Volatile Files and Directories Loaded: loaded (/lib/systemd/system/systemd-tmpfiles-setup.service; static; vendor preset: enabled) Active: active (exited) since Tue 2023-01-31 15:37:14 CST; 6 days ago Docs: man:tmpfiles.d(5) man:systemd-tmpfiles(8) Process: 648 ExecStart/bin/systemd-tmpfiles --create --remove --boot --exclude-prefix/dev (codeexited, status0/SUCCESS) Main PID: 648 (codeexited, status0/SUCCESS) Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable. 4 systemd-tmpfiles-clean.timer
systemd-tmpfiles-clean.timer 计时器是代替cron来完成定时清理的工作。
上一章节中可以看到使用systemctl status systemd-tmpfiles-clean.timer 可以获取到进程状态
那么如何来设置并查看剩余倒计时的呢
4.1 /usr/lib/systemd/system/systemd-tmpfiles-clean.timer
通过文件/usr/lib/systemd/system/systemd-tmpfiles-clean.timer 可以设置计时器的时间触发间隔如下文所示
cat /usr/lib/systemd/system/systemd-tmpfiles-clean.timer \# SPDX-License-Identifier: LGPL-2.1 \# \# 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] DescriptionDaily Cleanup of Temporary Directories Documentationman:tmpfiles.d(5) man:systemd-tmpfiles(8) [Timer] OnBootSec15min ## 开机15分钟后执行OnUnitActiveSec1d ## 离上次执行服务1天后再次执行
通过设置配置文件并重新加载配置使其生效。 sudo systemctl daemon-reload sudo systemctl enable --now systemd-tmpfiles-clean.timer
4.2 systemctl list-timer
查看剩余触发间隔可以使用命令查看
systemctl list-timers | grep tmpfile Tue 2023-02-07 15:52:14 CST 23h left Mon 2023-02-06 15:52:14 CST 25min ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service 5 tmpfile配置文件的格式说明
以/usr/lib/tmpfiles.d/tmp.conf文件为例 cat tmp.conf \# 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. \# See tmpfiles.d(5) for details \# Clear tmp directories separately, to make them easier to override D /tmp 1777 root root - \#q /var/tmp 1777 root root 30d \# Exclude namespace mountpoints created with PrivateTmpyes x /tmp/systemd-private-%b-* X /tmp/systemd-private-%b-*/tmp x /var/tmp/systemd-private-%b-* X /var/tmp/systemd-private-%b-*/tmp \# Remove top-level private temporary directories on each boot R! /tmp/systemd-private-* R! /var/tmp/systemd-private-* 解释 type代表类型path代表路径mode代表权限UID用户 GID用户组AGE生存时间Argument代表附加参数。 常见的type类型有 类型说明f如果文件不存在则创建该文件。如果给出了参数参数并且文件还不存在它将被写入文件。不遵循符号链接。F创建或截断文件。如果给出了参数参数它将被写入文件。不遵循符号链接。d创建目录。如果指定了模式和所有权将进行调整。如果指定了age参数则此目录的内容将进行基于时间的清理。D类似于d但是在使用——remove时目录的内容将被删除v如果路径还不存在则创建子卷文件系统支持子卷(btrfs)并且系统本身安装在子卷中(具体来说:根目录/本身就是子卷)。否则,创建一个普通目录方法与d相同。x在清理过程中忽略路径。使用此类型可以排除由Age参数控制的清理路径。注意这种类型的行不影响r或r行的效果。这种类型的行可以接受X在清理过程中忽略路径。使用此类型可以排除由Age参数控制的清理路径。与x不同的是如果path是一个目录此参数将不排除内容而只排除目录本身。r删除存在的文件或目录。这可能不用于删除非空目录使用R。这种类型的行接受shell样式的glob来代替正常的路径名。不遵循符号链接R递归地删除路径及其所有子目录(如果它是目录)。这种类型的行接受shell样式的glob来代替正常的路径名。不遵循符号链接。z调整访问模式、用户和组所有权并恢复文件或目录的SELinux安全上下文(如果存在)。这种类型的行接受shell样式的glob来代替正常的路径名。不遵循符号链接。Z递归地设置访问模式、用户和组所有权并恢复文件或目录(如果存在)及其子目录和其中包含的文件(如果适用)的SELinux安全上下文。t设置扩展属性。这种类型的行接受shell样式的glob来代替正常的路径名。这对于设置SMACK标签很有用。不遵循符号链接。T递归地设置扩展属性。这种类型的行接受shell样式的glob来代替正常的路径名。这对于设置SMACK标签很有用。不遵循符号链接。…更多选项使用命令 man 5 tmpfile 查看具体类型使用方法。6 手动清理文件
手动清理临时文件
配置systemd-tmpfiles来清理/testtmp目录这将确保目录不包含最近3天未使用过的文件。
可以复制示例配置/usr/lib/tmpfiles.d/tmp.conf文件并进行更新。
如下编辑文件 $ sudo vim /etc/tmpfiles.d/testtmp.confSee tmpfiles.d(5) for details\# Clear tmp directories separately, to make them easier to overrideq /testtmp 1777 root root 3d如果要确保拥有正确所有权的直接性请创建如下配置d /run/testtmp 0700 root root 60s必须清除该目录中最近60秒钟内未使用的任何文件。创建文件后使用以下命令确保文件包含适当的配置sudo systemd-tmpfiles --create /etc/tmpfiles.d/testtmp.conf如果在输出中看不到任何错误则表明配置设置正确可以随时使用以下命令调用手动清理systemd-tmpfiles --clean /etc/tmpfiles.d/testtmp.conf