当前位置: 首页 > 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;如…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...