unantu下的tmp文件夹_/tmp目录如何清理?

/tmp目录在Ubuntu系统中的清理通常在启动时自动进行。本文介绍了从14.04版到较新版本的不同清理策略,包括由systemd-tmpfiles、tmpreaper等工具执行的定时清理。用户可以通过修改配置文件如/etc/default/rcS、/etc/tmpfiles.d等来调整清理频率和行为。
摘要由CSDN通过智能技术生成

问题描述

/tmp目录如何清理?它是自动的吗?如果有,清理的频率如何?

最佳解决方案

注意!至少从Ubuntu 14.04开始,这个答案已经过时了。查看目前情况的其他答案,如果他们证明是正确的,那么他们会疯狂地向上投票。也发表评论,所以我可以把链接放在当前正确的答案。

2011年的旧答案:

/tmp的清洁由新贵脚本/etc/init/mounted-tmp.conf完成。每次安装/tmp时,该脚本都由新贵运行。实际上这意味着每次启动。

该脚本的内容大致如下:如果/tmp中的文件比$TMPTIME天早,则会被删除。

$TMPTIME的默认值为0,这意味着/tmp中的每个文件和目录都被删除。 $TMPTIME是/etc/default/rcS中定义的环境变量。

次佳解决方案

默认情况下,每次启动时目录都会被清除,因为TMPTIME默认为0。

在这里您可以更改以下文件中的时间:

/etc/default/rcS

TMPTIME表示tmp应该在几天内清除多久

第三种解决方案

尽管/tmp文件夹不是用于存储文件long-term的地方,但有时候您希望保留的时间比下次重新引导时长一些,这是Ubuntu系统上的默认设置。我知道一两次我在测试期间向/tmp下载了一些东西,在进行更改后重新启动,然后又丢失了原始数据。如果您想保留/tmp文件的时间更长,可以更改此设置。

更改/tmp清理频率

系统重启时清除/tmp的默认设置保存在/etc/default/rcS文件中。我们将看到的价值是TMPTIME。

TMPTIME=0的当前值表示在重新启动时删除文件,尽管该文件的年龄。将该值更改为不同的(正数)值将改变文件在/tmp中的存活天数。

TMPTIME=7

此设置将允许文件在/tmp中保留一周,然后在下次重新启动时删除它们。负数(TMPTIME=-1)告诉系统不要删除/tmp中的任何内容。这可能不是你想要的,但可用。

第四种方案

在Ubuntu 14.04中,这由tmpreaper完成,每天由cron调用(来自/etc/cron.daily)。该程序可以通过/etc/default/rcS和/etc/tmpreaper.conf进行配置。

第五种方案

我在Ubuntu 16.10上检查这个。我可以证明,编辑/etc /default /rcS完全不起作用,无论你放在那个文件中,tmp中的文件都会通过重新启动而被清除。正如其他人所说,tmpreaper不再使用。

我认为正确的答案是Ubuntu 16.10有一个新的设置。在手册页”tmpfiles.d”中有一个文件夹/etc/tmpfiles.d。在该文件夹中,应该放置一个配置文件来控制/tmp是否要被擦除。这是我正在做的,以阻止在/tmp中删除文件的重新启动,除非他们已经20天了:

#/etc/tmpfiles.d/tmp.conf

d /tmp 1777 root root 20d

如果您不想删除文件,请用”-“替换”20d”。这是我最大的努力,那个手册页几乎无法透露细节。

新安装程序的优点是,即使系统未重新启动,文件清理程序仍可以运行(例如始终启动服务器)。我认为这是一大优势。

第六种方案

14.04之前:

每次重新启动时都会清理它。

第七种方案

在运行Ubuntu的服务器之一上,我们有一个脚本来删除/tmp中的文件,并且每晚运行一次。

该脚本是:

#!/bin/sh

# Clean file and dirs more than 3 days old in /tmp nightly

/usr/bin/find /tmp -type f -atime +2 -mtime +2 |xargs /bin/rm -f &&

/usr/bin/find /tmp -type d -mtime +2 -exec /bin/rm -rf '{}' \; &&

/usr/bin/find /tmp -type l -ctime +2 |xargs /bin/rm -f &&

/usr/bin/find -L /tmp -mtime +2 -print -exec rm -f {} \;

只要将上面的内容保存到文件chmod 775并创建一个cron条目来运行它。由于这是一个Web服务器,我们不希望重启它,原因很明显。

第八种方案

在systemd Ubuntu(15.10和更新版本)中,这由systemd完成,使用systemd-tmpfiles-clean服务和定时器:

$ systemctl cat systemd-tmpfiles-clean.service

# /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=local-fs.target time-sync.target

Before=shutdown.target

[Service]

Type=oneshot

ExecStart=/bin/systemd-tmpfiles --clean

IOSchedulingClass=idle

$ systemctl cat systemd-tmpfiles-clean.timer

# /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

因此systemd-tmpfiles-clean在关机时运行,否则每天运行一次。清理的文件可以使用another answer中提到的/etc/tmpfiles.d进行扩展。

您可以使用systemctl edit systemd-tmpfiles-clean.timer更改计时器行为本身,并使用各种systemd Timer配置选项(请参阅man 5 systemd.timer)。

参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值