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

PTA Advanced 1159 Structure of a Binary Tree C++

目录 题目 Input Specification: Output Specification: Sample Input: Sample Output: 思路 代码 题目 Suppose that all the keys in a binary tree are distinct positive integers. Given the postorder and inorder traversal sequences, a binary tree can be un…...

CDN绕过技术总汇

注 本文首发于合天网安实验室 首发链接&#xff1a;https://mp.weixin.qq.com/s/9oeUpFUZ_0FUu6YAhQGuAg 近日HVV培训以及面试&#xff0c;有人问了CDN该如何绕过找到目标真实IP&#xff0c;这向来是个老生常谈的问题&#xff0c;而且网上大多都有&#xff0c;但是有些不够全面…...

算法训练营DAY51|300.最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组

本期是求子序列的新的一期&#xff0c;题目前两道有一些相似之处&#xff0c;思路差不多&#xff0c;第三道有一点难度&#xff0c;但并不意味着第一道没有难度&#xff0c;没有做过该类型题的选手&#xff0c;并不容易解出题解。 300. 最长递增子序列 - 力扣&#xff08;Leet…...

mac:彻底解决-安装应用后提示:无法打开“XXX”,因为无法验证开发者的问题;无法验证此App不包含恶意软件

mac从浏览器或其他电脑接收了应用&#xff0c;但是打开报错 目录报错解决办法一次性方法永久解决方法验证恢复应用验证报错 截图如下&#xff1a; 错误信息 无法打开“XXX”&#xff0c;因为无法验证开发者的问题&#xff1b;无法验证此App不包含恶意软件 解决办法 一次性方…...

CPU 指标 user/idle/system 说明

从图中看出&#xff0c;一共有五个关于CPU的指标。分别如下&#xff1a; User User表示&#xff1a;CPU一共花了多少比例的时间运行在用户态空间或者说是用户进程(running user space processes)。典型的用户态空间程序有&#xff1a;Shells、数据库、web服务器…… Nice N…...

Thinkphp大型进销存ERP源码/ 进销存APP源码/小程序ERP系统/含VUE源码支持二次开发

框架&#xff1a;ThinkPHP5.0.24 uniapp 包含:服务端php全套开源源码&#xff0c;uniapp前端全套开源源码&#xff08;可发布H5/android/iod/微信小程序/抖音小程序/支付宝/百度小程序&#xff09; 注&#xff1a;这个是全开源&#xff0c;随便你怎么开&#xff0c;怎么来&a…...

hgame2023 WebMisc

文章目录Webweek1Classic Childhood GameBecome A MemberGuess Who I AmShow Me Your BeautyWeek2Git Leakagev2boardSearch CommodityDesignerweek3Login To Get My GiftPing To The HostGopher Shopweek4Shared DiaryTell MeMiscweek1Where am I神秘的海报week2Tetris Master…...

67. Python的绝对路径

67. Python的绝对路径 文章目录67. Python的绝对路径1. 准备工作2. 路径3. 绝对路径3.1 概念3.2 查看绝对路径的方法4. 课堂练习5. 用绝对路径读取txt文件6. 加\改写绝对路径6.1 转义字符知识回顾6.2 转义字符改写7. 总结1. 准备工作 对照下图&#xff0c;新建文件夹和txt文件…...

VHDL语言基础-组合逻辑电路-加法器

目录 加法器的设计&#xff1a; 半加器&#xff1a; 全加器&#xff1a; 加法器的模块化&#xff1a; 四位串行进位全加器的设计&#xff1a; 四位并行进位全加器&#xff1a; 串行进位与并行进位加法器性能比较&#xff1a; 8位加法器的实现&#xff1a; 加法器的设计&…...

内存检测工具Dr.Memory在Windows上的使用

之前在https://blog.csdn.net/fengbingchun/article/details/51626705 中介绍过Dr.Memory&#xff0c;那时在Windows上还不支持x64&#xff0c;最新的版本对x64已有了支持&#xff0c;这里再总结下。 Dr.Memory源码地址https://github.com/DynamoRIO/drmemory&#xff0c;最新发…...

做网站主要是做什么/搜索引擎优化的基础是什么

在API网关开放API服务后&#xff0c;如何保障服务的稳定性&#xff0c;怎么能够实时监控API的情况&#xff1f;及时处理API服务异常&#xff0c;是API开放者关注的重点。本文将主要介绍API网关提供的API监控报警功能&#xff0c;通过简单的配置&#xff0c;即可帮助您实现API的…...

郑州治疗精神病哪家好/河南seo推广

过几天小弟要去面试了&#xff0c;当然免不了要好好复习下功课&#xff0c;其实很多东西也不是特别清楚&#xff0c;今天都当作一个回顾和巩固&#xff0c;希望我的这篇文章能对即将去找工作的同学有所帮助。 1. Q&#xff1a;什么是activity&#xff1f; 虽然这个问题现在不流…...

wordpress分享到微博才能看到/信息发布平台推广有哪些

一、选项卡 如今很多应用都会使用碎片以便在同一个活动中能够显示多个不同的视图。在Android 3.0 以上的版本中&#xff0c;我们已经可以使用ActionBar提供的Tab来实现这种效果&#xff0c;而不需要我们自己去实现碎片的切换。ActionBar默认是不具备选项卡功能的&#xff0c;所…...

17网站一起做网店靠谱吗/网站优化价格

ps&#xff1a;查看当前进程(ps -aef)例子&#xff1a;查看当前进程用户ID 进程ID 父进程ID CPU占用率 开始时间 终端ID 运行总时间 命令名pidof&#xff1a;查看某项服务的所有进程Kill&#xff1a;中止进程例子&#xff1a;中止进程ID为3393的进程killall&#xff1a…...

ps做设计想接私活在什么网站/电商关键词工具

【题目描述】 已知矩阵的大小定义为矩阵中所有元素的和。给定一个矩阵&#xff0c;你的任务是找到最大的非空(大小至少是1 * 1)子矩阵。 【题目链接】 http://noi.openjudge.cn/ch0406/1768/ 【算法】 众所周知一维子区间最大值要如何求&#xff0c;那么为求二维子区间最大和可…...

网站搭建就来徐州百度网络非常好/如何在百度上推广自己

用了 Docker&#xff0c;好处挺多的&#xff0c;但是有一个不大不小的问题&#xff0c;它会一不小心占用太多磁盘&#xff0c;这就意味着我们必须及时清理。作为一个有信仰的技术公司&#xff0c;我们Fundebug的后台采用了酷炫的全 Docker 化架构&#xff0c;所有服务&#xff…...