如何在Linux中自动删除或清理/tmp文件夹内容?

每个Linux系统都有一个名为的目录/tmp,该目录已挂载了单独的文件系统。

它具有称为tmpfs的特殊文件系统。这是一个虚拟文件系统,操作系统将在系统引导时自动挂载/tmp挂载点。

如果要根据应用程序要求分别挂载/tmp目录。

是的,您可以挂载它,并且应该将其添加到/etc/fstab文件中。

/tmp目录是一个目录,用于在应用程序运行时保存临时文件(或会话文件)。

这些临时文件的处理完成后,它们将由应用程序自动删除。

默认情况下,仅在系统启动或重新引导时清理/tmp目录。

默认情况下,完成处理后,应用程序会自动从此目录中删除其内容。但是某些应用程序不会执行。

因此,我们需要手动删除这些文件,但是如果我们从此目录中删除一些活动文件,这会导致断开当前已建立的会话的连接。

但是,如果/tmp目录已满,我们需要删除未使用的文件,旧的会话文件或无效的文件,以释放一些磁盘空间。

否则,在服务器上运行的应用程序将无法正常工作,当您尝试在/tmp目录中写入会话文件时,您将收到一些错误消息。

在这种情况下,删除/tmp目录内容的最佳方法是什么。

使用df命令检查/tmp目录是否已单独安装。是的,根据下面的输出,/tmp已分别安装。

# df -h
Filesystem      Size  Used Avail Use% Mounted on
dev             7.8G     0  7.8G   0% /dev
run             7.8G  1.7M  7.8G   1% /run
/dev/nvme0n1p1  217G  129G   78G  63% /
tmpfs           7.8G  841M  7.0G  11% /dev/shm
tmpfs           7.8G     0  7.8G   0% /sys/fs/cgroup
tmpfs           7.8G  106M  7.7G   2% /tmp
/dev/loop0      109M  109M     0 100% /var/lib/snapd/snap/odrive-unofficial/2
/dev/loop1       91M   91M     0 100% /var/lib/snapd/snap/core/6405
/dev/loop2       90M   90M     0 100% /var/lib/snapd/snap/core/6130
tmpfs           1.6G   12K  1.6G   1% /run/user/120
tmpfs           1.6G   52K  1.6G   1% /run/user/1000
/dev/sda2       932G  622G  311G  67% /run/media/daygeek/DATA
您可以导航到“ /tmp”安装点,以查看/tmp占用了哪种文件。
# ls -lh /tmp
total 0
drwxr-xr-x 3 daygeek daygeek 80 Apr 28 22:20 checkup-db-daygeek
-rw-r----- 1 daygeek daygeek  0 Apr 28 22:20 qipc_sharedmemory_MSMNotifier1982c3c75cbed4786bc185973fce6242a7b208b8
-rw-r----- 1 daygeek daygeek  0 Apr 28 22:20 qipc_systemsem_MSMNotifier1982c3c75cbed4786bc185973fce6242a7b208b8
srwxr-xr-x 1 daygeek daygeek  0 Apr 29 08:43 qtsingleapp-notepa-8945-3e8
drwx------ 3 root    root    60 Apr 28 22:19 systemd-private-7c36847f844143cba83f3a0fdd8623b7-colord.service-0SAr1l
drwx------ 3 root    root    60 Apr 28 22:19 systemd-private-7c36847f844143cba83f3a0fdd8623b7-ModemManager.service-4jLbNd
drwx------ 3 root    root    60 Apr 28 22:19 systemd-private-7c36847f844143cba83f3a0fdd8623b7-systemd-timesyncd.service-iuoel6
drwx------ 3 root    root    60 Apr 28 22:19 systemd-private-7c36847f844143cba83f3a0fdd8623b7-upower.service-ApTFNf
drwx------ 3 daygeek daygeek 60 Apr 29 08:35 Temp-7767ec79-0c9d-405e-a456-52718e66292d
drwx------ 2 daygeek daygeek 40 Apr 28 22:22 Temp-9bb8163c-aec2-47ce-a0b1-597ab299807a
drwx------ 2 daygeek daygeek 40 Apr 29 11:14 tracker-extract-files.1000
可以通过使用以下三个选项来实现。
atime: 文件上次访问时间–访问时间显示文件或目录中的数据最后被命令或脚本等任何进程访问的时间。
ctime:文件上次更改时间– ctime显示文件或目录元数据何时更改。这意味着何时更改文件属性(如所有权或组等)。
mtime:文件上次修改时间– mtime显示您修改文件内容或保存文件的时间。除非文件属性被更新,否则大多数情况下ctime和mtime会相同。
方法1:如何使用mtime在Linux中删除早于“ X”天的/tmp文件
这些命令将帮助您删除“ X”天之前的文件。取决于您,如何执行此操作。您可以根据需要使用这些选项。
要使用mtime删除/tmp目录上早于2天的/tmp文件,请运行以下命令。
# find /tmp -type f -mtime +2 -delete;
or
# find /tmp -type f -mtime +2 -exec rm -f {} ;
or
# find /tmp -type f -mtime +2 | xargs rm -f
方法2:如何在Linux中使用atime删除早于“ X”天的/tmp文件
这些命令将帮助您删除“ X”天之前的文件。取决于您,如何执行此操作。您可以根据需要使用这些选项。
要使用atime删除/tmp目录上早于2天的/tmp文件,请运行以下命令。
# find /tmp -type f -atime +2 -delete;
or
# find /tmp -type f -atime +2 -exec rm -f {} ;
or
# find /tmp -type f -atime +2 | xargs rm -f
方法3:如何在Linux中使用ctime删除早于“ X”小时的/tmp文件
要使用ctime删除/tmp目录上早于5个小时的/tmp文件,请运行以下命令。
# find /tmp -type f -mmin -300 -delete;
or
# find /tmp -type f -mmin -300 -exec rm -f {} ;
or
# find /tmp -type f -mmin -300 | xargs rm -f
方法4:如何在Linux中使用Shell脚本删除早于“ X”小时的/tmp文件
以上方法需要人工交互才能执行任务。
但是,我们无法在24/7之前关注这一点。如果您有1000多台服务器,那么解决方案是什么?
它应该通过脚本自动执行。要清理/tmp目录,我们可以编写一个小的Shell脚本。
该脚本将删除5小时之前的/tmp文件。
# vi /opt/script/tmp-cleanup.sh
#!/bin/bash
find /tmp -type f -mmin -300 -exec rm -f {} ;
最后添加一个cronjob以使其自动化。它将每五个小时运行一次。
# crontab -e
0 */5 * * * /bin/bash /opt/script/tmp-cleanup.sh