Linux 自动清除 tmp 目录下文件

发布于 2021-07-06 12:33:33 字数 4680 浏览 2293 评论 0

一、常见 Linux 发行版 /tmp 清理策略

发行版何时删除如何配置
Ubuntu 14.04系统开机引导在 /etc/default/rcS 中指定 TMPTIME 参数
Ubuntu 16.10系统开机引导在 /etc/tmpfiles.d/tmp.conf 中指定
RedHat-like RHEL6每日定时/etc/cron.daily/tmpwatch
RedHat-like RHEL7每日定时/usr/lib/tmpfiles.d/tmp.conf
Gentoo//etc/conf.d/bootmisc

二、RHEL7 清除原理

systemd-tmpfiles-clean.service 服务

服务: systemd-tmpfiles-clean.service

服务何时被执行呢?

Linux 下该服务的执行可以根据 systemd-tmpfiles-clean.timer 进行管理

[root@shuidi-shell-001:/usr/lib/tmpfiles.d]# 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


# OnBootSec 表示相对于机器被启动的时间点
# 表示相对于匹配单元(本标签下Unit=指定的单元)最后一次被启动的时间点

上述配置文件表示两种情况会执行该服务

  1. 开机 15 分钟执行服务
  2. 离上次执行该服务 1 天后执行服务

服务如何执行呢?

[root@shuidi-shell-001:/usr/lib/tmpfiles.d]# cat /usr/lib/systemd/system/systemd-tmpfiles-clean.service
#  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=Cleanup of Temporary Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
DefaultDependencies=no
Conflicts=shutdown.target
After=systemd-readahead-collect.service systemd-readahead-replay.service local-fs.target time-sync.target
Before=shutdown.target

[Service]
Type=oneshot
ExecStart=/usr/bin/systemd-tmpfiles --clean
IOSchedulingClass=idle


# Type=oneshot 这一选项适用于只执行一项任务、随后立即退出的服务
# 命令文件 /usr/bin/systemd-tmpfiles
# 命令参数 --clean
# 通过定期执行 /usr/bin/systemd-tmpfiles --clean 完成清理

命令: /usr/bin/systemd-tmpfiles

[root@shuidi-shell-001:/usr/lib/tmpfiles.d]# /usr/bin/systemd-tmpfiles --help
systemd-tmpfiles [OPTIONS...] [CONFIGURATION FILE...]

Creates, deletes and cleans up volatile and temporary files and directories.

  -h --help                 Show this help
     --version              Show package version
     --create               Create marked files/directories
     --clean                Clean up marked directories
     --remove               Remove marked files/directories
     --boot                 Execute actions only safe at boot
     --prefix=PATH          Only apply rules with the specified prefix
     --exclude-prefix=PATH  Ignore rules with the specified prefix
     --root=PATH            Operate on an alternate filesystem root


# --clean 将会清理被标记的文件目录

哪些目录被标记,又是什么样的标记呢?

定义在配置文件 /usr/lib/tmpfiles.d/tmp.conf 中

配置文件: /usr/lib/tmpfiles.d/tmp.conf

[root@shuidi-shell-001:/usr/lib/tmpfiles.d]# cat /usr/lib/tmpfiles.d/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
#Type Path        Mode User Group Age Argument
v /tmp 1777 root root 10d
v /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
  1. 在根据 寿命 字段清理过期文件时, 忽略指定的路径及该路径下的所有内容。 可以在 路径 字段中使用 shell 风格的通配符。 注意,这个保护措施对 r 与 R 无效。
  2. 在根据 寿命 字段清理过期文件时, 仅忽略指定的路径自身而不包括该路径下的其他内容。 可以在 路径 字段中使用 shell 风格的通配符。 注意,这个保护措施对 r 与 R 无效。

上述配置表示:

  • 清理 /tmp 目录超过 10 天的内容,但是匹配 /tmp/systemd-private-%b-* 的目录及其路径下的全部内容会被保留。
  • 清理 /var/tmp 目录超过 30 天的内容,但是匹配 /var/tmp/systemd-private-%b-* 的目录及其路径下的全部内容被保留。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84961 人气
更多

推荐作者

醉城メ夜风

文章 0 评论 0

远昼

文章 0 评论 0

平生欢

文章 0 评论 0

微凉

文章 0 评论 0

Honwey

文章 0 评论 0

qq_ikhFfg

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文