我使用的是 Ubuntu 22.04LTS。我想创建一个文件夹“temp”,在会话期间我在其中保存临时文件,顾名思义,这些文件是临时的。如何定义一个脚本,在关闭时自动删除该文件夹的内容?
例如:我下载了一些任务所需的文档,但最终我不需要保留它们,从而避免积累无用的文件。
我使用的是 Ubuntu 22.04LTS。我想创建一个文件夹“temp”,在会话期间我在其中保存临时文件,顾名思义,这些文件是临时的。如何定义一个脚本,在关闭时自动删除该文件夹的内容?
例如:我下载了一些任务所需的文档,但最终我不需要保留它们,从而避免积累无用的文件。
替代方案 01:(有关替代方案 01 的缺点,请参阅替代方案 02 或 @Raffa 的评论。)
让我们创建临时目录,并以普通用户身份拥有它,以便我们可以以普通用户身份对其进行写入:
让我们编写一个脚本来在系统启动时删除临时文件。我们将脚本存储在以下目录中:
创建一个文件,名称
remove_my_temp_files.sh
为:将以下内容写入该文件:
现在,创建一个名为的文件
remove_my_temp_files.service
:并将以下内容写入该文件:
现在,最终启用
remove_my_temp_files.service
为:现在,在此
/my_temp_files/
目录中创建的文件和目录将在每次系统启动时删除。替代方案02:
正如 @Raffa 在下面的评论中所建议的那样,我的方式
rm /path/to/dir/*
受到命令行允许的大小的限制,并且对于可以简单地按照crontab
他的建议完成的任务来说,使用系统服务有点太多了,这是替代答案:在 中写入以下代码
$HOME/bin/remove_user_temp.sh
:使该脚本可执行:
编辑
crontab
:如果允许,选择您选择的文件编辑器,然后开始编辑 cron 作业。在文件末尾添加:
保存您的编辑,然后退出 crontab。这还将在系统重新启动时删除临时目录中的文件。
替代方案03:
最简单的选择是将临时文件放入
/tmp/
或/dev/shm/
目录中。存储在其中的文件/tmp
将在下次系统启动时被删除,而/dev/shm
存储在计算机内存中(而不是磁盘上)的文件将在计算机关闭或重新启动时被删除。Linux中内置了一种称为 tmpfs 的方法,可以准确地实现此目的。要使用它,请创建一个文件夹 tmpfs,当它不再是 tmpfs 或计算机关闭时,创建 tmpfs 后文件夹内的所有内容都会消失。缺点是 tmpfs 文件夹中的文件只能驻留在 RAM 或交换区中。
如果文件夹是 tmpfs,则文件系统不会存储。要将文件夹永久标记为 tmpfs,您应该编辑
/etc/fstab
:除了 tmpfs 之外,Ubuntu 的服务还会
/tmp
在启动时自动清理目录(感谢 raj),因此您可以在其中放置任何临时文件。