欢迎您, 来到 宁时修博客.^_^

Linux系统基础知识 --- CentOS 7的 /tmp 目录自动清理规则

2019/08/06 言则行 Linux 658
Linux系统基础知识 --- CentOS 7的 /tmp 目录自动清理规则

    

    前几天有个spring boot项目报错,导致程序使用不了:

message: "Failed to parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [/tmp/tomcat.5745462239260485354.8040/work/Tomcat/localhost/ROOT] is not valid"


    就是说 在 /tmp 目录下的程序临时目录和文件被清理掉了。这个错误需要重启下 程序 让它重新生成这个临时目录。

    为此,了解下 CentOS 7的 /tmp 目录自动清理规则。


    CentOS 6 及以下的系统使用watchtmp + cron来实现定时清理临时文件的效果。

    

    CentOS 7系统使用 systemd 来管理系统服务。

    与定时清理临时文件相关的系统服务有三个:

systemd-tmpfiles-setup.service  : Create Volatile Files and Directories
systemd-tmpfiles-setup-dev.service :Create static device nodes in /dev
systemd-tmpfiles-clean.service :Cleanup of Temporary Directories


    这三个目录下的配置文件 决定如何创建、删除、清理 易变文件与临时文件以及易变目录与临时目录:

/etc/tmpfiles.d/*.conf
/run/tmpfiles.d/*.conf
/usr/lib/tmpfiles.d/*.conf


    /tmp 目录的自动清理规则 在 /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
v /tmp 1777 root root 10d      # 清理 /tmp 下10天前的目录和文件
v /var/tmp 1777 root root 30d  # 清理 /var/tmp 下30天前的目录和文件

# 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


    配置这个文件,让系统不自动清理 /tmp下以 tomcat开头的目录,增加以下这条内容:

x /tmp/tomcat.*


    这样的话,系统将不会自动清理掉 /tmp/tomcat 开头的目录。

    

    附录:

    配置文件的格式是每行对应一个路径,包含如下字段: 类型, 路径, 权限, 属主, 属组, 寿命, 参数

#Type    Path       Mode UID  GID  Age  Argument
d     /run/user   0755 root  root  10d  -
L     /tmp/foobar   -   -   -    -   /dev/null


    类型介绍:

    d   创建指定的目录并赋于指定的UID/GID与权限。 如果指定的目录已经存在,那么仅调整UID/GID与权限。 如果指定了"寿命"字段,那么该目录中的内容将遵守基于时间的清理策略。

    v   如果指定的路径不存在, 并且该路径位于一个Btrfs子卷中, 那么按照指定的路径创建子卷。 否则,创建一个普通的目录(与 d 一样)。

    x   在根据"寿命"字段清理过期文件时, 忽略指定的路径及该路径下的所有内容


    详细请看:tmpfiles.d中文手册

点赞
说说你的看法

所有评论: (0)

# 加入组织

1、用手机QQ扫左侧二维码

2、搜Q群:1058582137

3、点击 宁时修博客交流群