当前位置: 首页 > news >正文

【Linux】tmpfile 使用介绍

tmpfile 使用介绍

1 介绍

很多情况下,需要系统自动识别/tmp、/var/tmp下的临时目录,并将其自动清理其中的过期文件。这个工具就是systemd-tmpfiles。

网上很多博客使用tmpwatch+cron的方法来管理临时文件和临时存放文件的目录,在后期的版本中都已经修改为使用systemd-tmpfiles+systemd-tmpfiles-timers替换早期版本。

2 systemd-tmpfiles

systemd提供了一个结构化的可配置方法来管理临时文件和目录,即systemd-tmpfiles,可以创建、删除和管理临时文件的服务。旧版本系统使用watchtmp+cron来共同实现管理临时文件。

systemd启动后,其中一个启动的服务单元是systemd-tmpfiles-setup,该服务的命令为:systemd-tmpfiles --creat/–clean *conf , *conf是可选的,不写默认是使用所有配置文件。

  • /etc/tmpfiles.d/*conf ,管理员可修改的配置文件

  • /run/tmpfiles.d/*conf ,daemon应用程序自己管理的配置文件,不建议更改

  • /usr/lib/tmpfiles.d/*conf,rpm软件安装时,自动更新的配置文件,不能更改

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 (code=exited, status=0/SUCCESS) Main PID: 332 (code=exited, status=0/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 (code=exited, status=0/SUCCESS) Main PID: 648 (code=exited, status=0/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] Description=Daily Cleanup of Temporary Directories Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8) [Timer] OnBootSec=15min  ## 开机15分钟后执行OnUnitActiveSec=1d ## 离上次执行服务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 PrivateTmp=yes 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

相关文章:

【Linux】tmpfile 使用介绍

tmpfile 使用介绍 1 介绍 很多情况下,需要系统自动识别/tmp、/var/tmp下的临时目录,并将其自动清理其中的过期文件。这个工具就是systemd-tmpfiles。 网上很多博客使用tmpwatchcron的方法来管理临时文件和临时存放文件的目录,在后期的版本…...

实现光线追踪重投影的方法

光线追踪重投影方法 重投影这项技术一般用于时间性帧复用技术上,例如TAA(Temporal Anti-Aliasing)反走样或者抗锯齿技术。读这篇文章最好先对TAA这类技术的算法流程有了解。 1.TAA抗锯齿技术简介 先简单介绍下TAA抗锯齿的原理,在游戏中,当前…...

Hyperbolic Representation Learning for CV

Contents Hyperbolic geometry[CVPR 2020] Hyperbolic visual embedding learning for zero-shot recognitionIntroductionApproachHyperbolic Label Embedding LearningHyperbolic Image Embedding LearningExperiment[CVPR 2020] Hyperbolic Image EmbeddingsIntroduction...

In Context Learning 相关分享

个人知乎详见 https://zhuanlan.zhihu.com/p/603650082/edit 1. 前言 随着大模型(GPT3,Instruction GPT,ChatGPT)的横空出世,如何更高效地提示大模型也成了学术界与工业界的关注,因此In-context learning…...

【前端笔试题一】:解析url路径中的query参数

前言 本文记录下在笔试过程中的前端笔试编程题目,会持续更新 1. 题目: 解析 url 路径中的 query 参数,比如:‘http://building/#/skeleton?serialNumber2023020818332821073&jobNo210347&target%7B%22a%22%3A%22b%22%2C…...

K_A12_001 基于STM32等单片机采集火光火焰传感参数串口与OLED0.96双显示

K_A12_001 基于STM32等单片机采集火光火焰传感参数串口与OLED0.96双显示一、资源说明二、基本参数参数引脚说明三、驱动说明IIC地址/采集通道选择/时序对应程序:四、部分代码说明1、接线引脚定义1.1、STC89C52RC火光火焰模块1.2、STM32F103C8T6火光火焰模块五、基础知识学习与相…...

Java基础42 枚举与注解

枚举与注解一、枚举(enumeration)1.1 自定义类实现枚举1.2 enum关键字实现枚举1.2.1 enum的注意事项1.2.2 enum的使用练习1.2.3 enum的常用方法1.2.4 enum的使用细节及注意事项1.2.5 enum练习二、注解(Annotation)2.1 Override&am…...

shell的变量和引用

文章目录二、变量和引用2.1 什么是变量2.2变量的命名2.3 变量的类型2.3.1 根据数据类型分类2.3.2 根据作用域分类2.4 变量的定义2.5 shell中的引用2.6 变量的运算练习:二、变量和引用 在程序设计语言中,变量是一个非常重要的概念。也是初学者在进行Shel…...

基于PHP的招聘网站

摘要在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括在线招聘的网络应用,在外国在线招聘已经是很普遍的方式,不过国内的在线招聘可能还处于起步阶段。招聘网站具有招聘信息功能的双向选择,…...

轻松使用 Python 检测和识别车牌(附代码)

车牌检测与识别技术用途广泛,可以用于道路系统、无票停车场、车辆门禁等。这项技术结合了计算机视觉和人工智能。 本文将使用Python创建一个车牌检测和识别程序。该程序对输入图像进行处理,检测和识别车牌,最后显示车牌字符,作为…...

DVWA—CSRF-Medium跨站请求伪造中级

注意: 1、这里对XSS(Stored)关卡不熟悉的可以从这里去看http://t.csdn.cn/ggQDK 2、把难度设置成 Medium 一、这一关同样我们需要埋下伏笔,诱使用户点击来提交,首先从XSS(Stored)入手。 注意:在前面介绍…...

【电商】后台订单生成

结合商品流转的电商系列介绍了一些了,商品已经采购入库、价格税率设置好了、活动及相关模板也已经准备完毕,下面就应该上架销售了,现在接着聊下订单的生成。 订单从产生到最终的关闭需要经历很多的环节,订单也是电商系统的核心数据…...

作为公司,这个5款在线软件工具赶紧安利起来!

2023年了 ,您的企业还没使用在线软件工具吗?自从用了在线工具之后,感觉打开了新办公世界的大门,效率蹭蹭蹭地往上涨啊。对于喜欢追求效率和便捷的我来说,在线实在是太棒了!今天安利几个非常不错的在线软件工…...

面试(七)为什么一般希望将析构函数定义为虚函数

class B { public:~B() // 基类析构函数不为虚函数{cout << "B::~B()" << endl;} };class D : public B { public:~D(){cout << "D::~D()" << endl;} };void Test(B* t) {delete t;t nullptr; }int main() {B *pb new B;Test…...

MySQL必会四大函数-时间函数

一、时间日期获取函数 获取当前日期&#xff08;date&#xff09;函数&#xff1a;curdate() mysql> select curdate(); 2023-02-09 获取当前时间&#xff08;time&#xff09;函数&#xff1a;curtime() select curtime(); 08:49:27 获取当前时间戳&#xff08;date &…...

震惊!邻桌的程序猿做可视化报告竟然比我还快,带着好奇心我打开了他的电脑,发现惊天秘密,原因竟是...

其实&#xff0c;本文就是想分享一个做可视化的捷径&#xff01; 制作可视化的方式有千千万。 Excel 控若能轻车熟路驾驭 VBA&#xff0c;能玩出各种花来&#xff0c;再不济借助图表插件外援也能秒杀一众小白选 手。 会编程的&#xff0c;Echarts 几十行代码&#xff0c;分分…...

mathtype7与word冲突,无法安装,不显示工具栏的问题解决

首先无法安装&#xff0c;或安装出错时&#xff0c;要清理注册表防止以后再次出现该问题&#xff0c;以此记录留作备份。打开注册表的方法是键盘winr键同时按&#xff08;win就是Alt旁边像窗户图标的键&#xff09;&#xff0c;正常的话会跳出一个叫“运行”的家伙&#xff0c;…...

IBM AIX 升级Openssh 实现篇(编译安装)

升级成功佐证 !!!本文所有内容仅作参考,请在测试环境中具体测试完毕后才能应用于生产环境!!! [1]备份和恢复方案 开启telnet 服务,防止ssh 掉线后无法重连维护。在修复漏洞后关闭telnet。 备份该服务相关的所有文件,以便恢复。 root@TEST:/etc# vi inetd.conf #ftp…...

linux的睡眠框架及实现

睡眠 4 种模式&#xff1a;S2I (Suspend-to-Idle)&#xff1a; 挂起系统&#xff0c;IO进入低功耗模式。需配置CONFIG_SUSPEND。Standby&#xff1a;执行S2I后&#xff0c;把AP (nonboot CPU) 离线。除了CONFIG_SUSPEND的支持外&#xff0c;还需要向suspend子系统注册&#xff…...

Java面试知识点

工作也有好些年了&#xff0c;从刚毕业到前几年看过无数的面试题&#xff0c;总想着自己写一个面试总结&#xff0c;随着自我认识的变化&#xff0c;一些知识点的理解也越来越不一样了。写下来温故而知新。很多问题可能别人也总结过&#xff0c;但是答案不尽相同&#xff0c;如…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行&#xff0c;YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID&#xff1a; YW3…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会

在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...

恶补电源:1.电桥

一、元器件的选择 搜索并选择电桥&#xff0c;再multisim中选择FWB&#xff0c;就有各种型号的电桥: 电桥是用来干嘛的呢&#xff1f; 它是一个由四个二极管搭成的“桥梁”形状的电路&#xff0c;用来把交流电&#xff08;AC&#xff09;变成直流电&#xff08;DC&#xff09;。…...

从零开始了解数据采集(二十八)——制造业数字孪生

近年来&#xff0c;我国的工业领域正经历一场前所未有的数字化变革&#xff0c;从“双碳目标”到工业互联网平台的推广&#xff0c;国家政策和市场需求共同推动了制造业的升级。在这场变革中&#xff0c;数字孪生技术成为备受关注的关键工具&#xff0c;它不仅让企业“看见”设…...

SQL注入篇-sqlmap的配置和使用

在之前的皮卡丘靶场第五期SQL注入的内容中我们谈到了sqlmap&#xff0c;但是由于很多朋友看不了解命令行格式&#xff0c;所以是纯手动获取数据库信息的 接下来我们就用sqlmap来进行皮卡丘靶场的sql注入学习&#xff0c;链接&#xff1a;https://wwhc.lanzoue.com/ifJY32ybh6vc…...

P10909 [蓝桥杯 2024 国 B] 立定跳远

# P10909 [蓝桥杯 2024 国 B] 立定跳远 ## 题目描述 在运动会上&#xff0c;小明从数轴的原点开始向正方向立定跳远。项目设置了 $n$ 个检查点 $a_1, a_2, \cdots , a_n$ 且 $a_i \ge a_{i−1} > 0$。小明必须先后跳跃到每个检查点上且只能跳跃到检查点上。同时&#xff0…...

STL 2迭代器

文章目录 1.迭代器2.输入迭代器3.输出迭代器1.插入迭代器 4.前向迭代器5.双向迭代器6.随机访问迭代器7.不同容器返回的迭代器类型1.输入 / 输出迭代器2.前向迭代器3.双向迭代器4.随机访问迭代器5.特殊迭代器适配器6.为什么 unordered_set 只提供前向迭代器&#xff1f; 1.迭代器…...